Skip to content
Snippets Groups Projects
Select Git revision
  • 12563292cc099f7a5aaad18c215f0b966042694b
  • main default protected
  • v1.298.0
  • v1.297.0
  • v1.296.0
  • v1.295.0
  • v1.294.0
  • v1.293.0
  • v1.292.0
  • v1.291.0
  • v1.290.0
  • v1.289.0
  • v1.288.0
  • v1.287.0
  • v1.286.0
  • v1.285.0
  • v1.284.0
  • v1.283.0
  • v1.282.0
  • v1.281.0
  • v1.280.0
  • v1.279.0
22 results

debug.go

Blame
  • 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
    	}