Skip to content
Snippets Groups Projects
Commit 49bcad4f authored by Johan de Klerk's avatar Johan de Klerk
Browse files

Debug sqs and http calls

parent 774d5615
No related branches found
No related tags found
No related merge requests found
package handler_utils
import (
"bytes"
"context"
"encoding/json"
"fmt"
"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"
"io"
"net/http"
"os"
"strings"
)
// ========================================================================
// HTTP functions
// ========================================================================
func ServeHTTPFunctions(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]
}
// Call lambda function
request := events.APIGatewayProxyRequest{
Resource: req.URL.Path,
HTTPMethod: req.Method,
QueryStringParameters: query,
Body: body,
}
jsonRequest, _ := json.Marshal(request)
ctx := context.Background()
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
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(int(response["statusCode"].(float64)))
_, _ = io.WriteString(w, response["body"].(string))
}
// ========================================================================
// SQS Functions
// ========================================================================
func ServeSQSFunctions(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()
sqsType := req.URL.Path
sqsType = strings.ReplaceAll(sqsType, "/sqs/", "")
// Call lambda function
sqsRequest, _ := json.Marshal(events.SQSEvent{
Records: []events.SQSMessage{
{
Body: body,
MessageAttributes: map[string]events.SQSMessageAttribute{
"type": {
StringValue: utils.PointerValue(sqsType),
},
},
},
},
})
ctx := context.Background()
responseBytes, err := lambdaHandler.Invoke(ctx, sqsRequest)
if err != nil {
panic(err)
}
// Parse response
response := map[string]any{}
err = json.Unmarshal(responseBytes, &response)
if err != nil {
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(int(response["statusCode"].(float64)))
_, _ = io.WriteString(w, response["body"].(string))
}
...@@ -14,6 +14,7 @@ import ( ...@@ -14,6 +14,7 @@ import (
"github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sqs" "github.com/aws/aws-sdk-go/service/sqs"
"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/logs" "gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/logs"
"github.com/go-resty/resty/v2"
) )
var sqsClient *sqs.SQS var sqsClient *sqs.SQS
...@@ -102,7 +103,16 @@ func (m *Messenger) SendSQSMessage(headers map[string]string, body string, curre ...@@ -102,7 +103,16 @@ func (m *Messenger) SendSQSMessage(headers map[string]string, body string, curre
return *res.MessageId, err return *res.MessageId, err
} }
func SendSQSMessage(msgr Messenger, objectToSend interface{}, currentRequestID *string, sqsType string) error { func SendSQSMessage(msgr Messenger, objectToSend interface{}, currentRequestID *string, sqsType string, isDebug bool) error {
if isDebug {
resty.New().R().
SetBody(objectToSend).
Post("http://127.0.0.1:3000/sqs/" + sqsType)
return nil
}
if sqsClient == nil { if sqsClient == nil {
var err error var err error
sqsClient, err = NewSQSClient(msgr.Region) sqsClient, err = NewSQSClient(msgr.Region)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment