62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
|
package ambient
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"io"
|
||
|
"net/http"
|
||
|
|
||
|
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
||
|
"github.com/rs/zerolog"
|
||
|
|
||
|
"gitea.libretechconsulting.com/rmcguire/ambient-weather-local-exporter/pkg/awn"
|
||
|
)
|
||
|
|
||
|
func GetAWNHandlerFunc(appCtx context.Context) func(http.ResponseWriter, *http.Request) {
|
||
|
l := zerolog.Ctx(appCtx)
|
||
|
tracer := otel.GetTracer(appCtx, "awn.http.handler")
|
||
|
|
||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||
|
_, span := tracer.Start(r.Context(), "update")
|
||
|
defer span.End()
|
||
|
|
||
|
bodyBytes, err := io.ReadAll(r.Body)
|
||
|
if err != nil {
|
||
|
w.WriteHeader(http.StatusBadRequest)
|
||
|
}
|
||
|
|
||
|
l.Trace().Bytes("body", bodyBytes)
|
||
|
l.Trace().Any("request", r.URL.Query()).Send()
|
||
|
|
||
|
update, err := awn.UnmarshalQueryParams(r.URL.Query())
|
||
|
if err != nil {
|
||
|
l.Err(err).Send()
|
||
|
w.WriteHeader(http.StatusInternalServerError)
|
||
|
w.Write([]byte(err.Error()))
|
||
|
}
|
||
|
|
||
|
l.Trace().Any("update", update).Send()
|
||
|
|
||
|
w.Write([]byte("ok"))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func GetWundergroundHandlerFunc(appCtx context.Context) func(http.ResponseWriter, *http.Request) {
|
||
|
l := zerolog.Ctx(appCtx)
|
||
|
tracer := otel.GetTracer(appCtx, "wunderground.http.handler")
|
||
|
|
||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||
|
_, span := tracer.Start(r.Context(), "update")
|
||
|
defer span.End()
|
||
|
|
||
|
bodyBytes, err := io.ReadAll(r.Body)
|
||
|
if err != nil {
|
||
|
w.WriteHeader(http.StatusBadRequest)
|
||
|
}
|
||
|
|
||
|
l.Trace().Bytes("body", bodyBytes)
|
||
|
l.Trace().Any("request", r.URL.Query()).Send()
|
||
|
|
||
|
w.Write([]byte("ok"))
|
||
|
}
|
||
|
}
|