Select Git revision
debug.go 2.86 KiB
package handler_utils
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"strings"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/utils"
)
// ========================================================================
// HTTP functions
// ========================================================================
func ServeHTTPFunctions(ctx context.Context, lambdaHandler lambda.Handler, w http.ResponseWriter, req *http.Request) {
// Read body
buf := new(bytes.Buffer)
_, err := buf.ReadFrom(req.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
req.Body.Close()
body := buf.String()
// Read Query
queryValues := req.URL.Query()
query := map[string]string{}
for key, values := range queryValues {
query[key] = values[0]
}
headers := map[string]string{}
for key, values := range req.Header {
if len(values) > 0 {
headers[key] = values[0]
}
}
// Call lambda function
request := events.APIGatewayProxyRequest{
Path: req.URL.Path,
Resource: req.URL.Path,
HTTPMethod: req.Method,
QueryStringParameters: query,
Body: body,
Headers: headers,
}
jsonRequest, _ := json.Marshal(request)
responseBytes, err := lambdaHandler.Invoke(ctx, jsonRequest)
if err != nil {
panic(err)
}
// Parse response
response := map[string]any{}
err = json.Unmarshal(responseBytes, &response)
if err != nil {
return
}