fixed multi value problem

This commit is contained in:
overflowerror 2021-11-14 14:16:31 +01:00
parent 6ac99dc2af
commit c8dc8a1338

View file

@ -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