mirror of
https://github.com/sigmasternchen/iot-relay
synced 2025-03-15 06:28:55 +00:00
fixed multi value problem
This commit is contained in:
parent
6ac99dc2af
commit
c8dc8a1338
1 changed files with 31 additions and 24 deletions
|
@ -11,7 +11,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func lineProtocol(request types.Request, config config.Config) string {
|
func lineProtocolPrefix(request types.Request, config config.Config) string {
|
||||||
var builder strings.Builder
|
var builder strings.Builder
|
||||||
builder.WriteString(config.Client.Measurement)
|
builder.WriteString(config.Client.Measurement)
|
||||||
builder.WriteString(",host=")
|
builder.WriteString(",host=")
|
||||||
|
@ -24,40 +24,47 @@ func lineProtocol(request types.Request, config config.Config) string {
|
||||||
builder.WriteString(request.Location)
|
builder.WriteString(request.Location)
|
||||||
builder.WriteString(" ")
|
builder.WriteString(" ")
|
||||||
|
|
||||||
for key, value := range request.Data {
|
|
||||||
builder.WriteString(key)
|
|
||||||
builder.WriteString("=")
|
|
||||||
builder.WriteString(value)
|
|
||||||
builder.WriteString(" ")
|
|
||||||
}
|
|
||||||
|
|
||||||
builder.WriteString(strconv.FormatInt(time.Now().UnixNano(), 10))
|
|
||||||
|
|
||||||
return builder.String()
|
return builder.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetHandler(config config.Config) types.Callback {
|
func GetHandler(config config.Config) types.Callback {
|
||||||
return func(request types.Request) error {
|
return func(request types.Request) error {
|
||||||
line := lineProtocol(request, config)
|
prefix := lineProtocolPrefix(request, config)
|
||||||
|
timeString := strconv.FormatInt(time.Now().UnixNano(), 10)
|
||||||
|
|
||||||
url := config.Client.Address + "/write?db=" + config.Client.DB
|
url := config.Client.Address + "/write?db=" + config.Client.DB
|
||||||
|
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
req, err := http.NewRequest("POST", url, strings.NewReader(line))
|
|
||||||
|
|
||||||
if len(config.Client.Username) != 0 && len(config.Client.Password) != 0 {
|
var builder strings.Builder
|
||||||
req.SetBasicAuth(config.Client.Username, config.Client.Password)
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.Do(req)
|
for key, value := range request.Data {
|
||||||
if err != nil {
|
builder.Reset()
|
||||||
log.Println(err)
|
builder.WriteString(prefix)
|
||||||
return err
|
|
||||||
}
|
builder.WriteString(key)
|
||||||
if resp.StatusCode != 204 {
|
builder.WriteString("=")
|
||||||
err = fmt.Errorf("influxdb responded with %d", resp.StatusCode)
|
builder.WriteString(value)
|
||||||
log.Println(err)
|
builder.WriteString(" ")
|
||||||
return err
|
|
||||||
|
builder.WriteString(timeString)
|
||||||
|
|
||||||
|
req, err := http.NewRequest("POST", url, strings.NewReader(builder.String()))
|
||||||
|
|
||||||
|
if len(config.Client.Username) != 0 && len(config.Client.Password) != 0 {
|
||||||
|
req.SetBasicAuth(config.Client.Username, config.Client.Password)
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if resp.StatusCode != 204 {
|
||||||
|
err = fmt.Errorf("influxdb responded with %d", resp.StatusCode)
|
||||||
|
log.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in a new issue