diff --git a/go/api/go.mod b/go/api/go.mod index cfcdd8f..62205ef 100644 --- a/go/api/go.mod +++ b/go/api/go.mod @@ -12,6 +12,7 @@ require ( github.com/gofrs/uuid/v5 v5.3.0 github.com/golang-jwt/jwt/v5 v5.2.1 github.com/gorilla/feeds v1.2.0 + github.com/its-felix/aws-lwa-go-middleware v0.1.0 github.com/json-iterator/go v1.1.12 github.com/labstack/echo/v4 v4.12.0 golang.org/x/sync v0.8.0 @@ -20,6 +21,7 @@ require ( ) require ( + github.com/aws/aws-lambda-go v1.47.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.41 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 // indirect diff --git a/go/api/go.sum b/go/api/go.sum index 76f393d..5012392 100644 --- a/go/api/go.sum +++ b/go/api/go.sum @@ -1,3 +1,5 @@ +github.com/aws/aws-lambda-go v1.47.0 h1:0H8s0vumYx/YKs4sE7YM0ktwL2eWse+kfopsRI1sXVI= +github.com/aws/aws-lambda-go v1.47.0/go.mod h1:dpMpZgvWx5vuQJfBt0zqBha60q7Dd7RfgJv23DymV8A= github.com/aws/aws-sdk-go-v2 v1.32.2 h1:AkNLZEyYMLnx/Q/mSKkcMqwNFXMAvFto9bNsHqcTduI= github.com/aws/aws-sdk-go-v2 v1.32.2/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 h1:pT3hpW0cOHRJx8Y0DfJUEQuqPild8jRGmSFmBgvydr0= @@ -60,6 +62,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/gorilla/feeds v1.2.0 h1:O6pBiXJ5JHhPvqy53NsjKOThq+dNFm8+DFrxBEdzSCc= github.com/gorilla/feeds v1.2.0/go.mod h1:WMib8uJP3BbY+X8Szd1rA5Pzhdfh+HCCAYT2z7Fza6Y= +github.com/its-felix/aws-lwa-go-middleware v0.1.0 h1:u3Q+5o8HFOQVpm53ZSI+NFEy+j1dre7c2WzqArLuHuk= +github.com/its-felix/aws-lwa-go-middleware v0.1.0/go.mod h1:OrGl0WPwyTf73ZeMqz+y9DemRVlksXm5zwuypLV9DxQ= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= diff --git a/go/api/main.go b/go/api/main.go index 704f1ce..83357cf 100644 --- a/go/api/main.go +++ b/go/api/main.go @@ -2,12 +2,14 @@ package main import ( "context" + "encoding/json" "errors" "fmt" "github.com/explore-flights/monorepo/go/api/data" "github.com/explore-flights/monorepo/go/api/search" "github.com/explore-flights/monorepo/go/api/web" "github.com/gorilla/feeds" + lwamw "github.com/its-felix/aws-lwa-go-middleware" "github.com/labstack/echo/v4" "log/slog" "net/http" @@ -49,11 +51,38 @@ func main() { dataHandler := data.NewHandler(s3c, lhc, bucket) e := echo.New() - e.Use(authHandler.Middleware) + e.Use( + lwamw.EchoMiddleware( + lwamw.WithMaskError(), + lwamw.WithRemoveHeaders(), + ), + authHandler.Middleware, + ) jsonConnEdp := web.NewConnectionsEndpoint(connHandler, "json") pngConnEdp := web.NewConnectionsEndpoint(connHandler, "png") + e.GET("/api/lwamw", func(c echo.Context) error { + ctx := c.Request().Context() + + result := make(map[string]any) + + if deadline, ok := ctx.Deadline(); ok { + result["deadline"] = deadline + } + + var rc json.RawMessage + if lwamw.RequestContext(ctx, &rc) { + result["requestContext"] = rc + } + + if lc, ok := lwamw.LambdaContext(ctx); ok { + result["lambdaContext"] = lc + } + + return c.JSONPretty(http.StatusOK, result, "\t") + }) + e.POST("/api/connections/json", jsonConnEdp) e.GET("/api/connections/json/:payload", jsonConnEdp) e.POST("/api/connections/png", pngConnEdp)