From 8fb64da39a4367575a61ceb96c8766c63d99ccc9 Mon Sep 17 00:00:00 2001 From: frikky Date: Thu, 18 Feb 2021 08:00:54 +0100 Subject: [PATCH] Added initial lambda function --- functions/extensions/aws-lambda/main.go | 66 +++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 functions/extensions/aws-lambda/main.go diff --git a/functions/extensions/aws-lambda/main.go b/functions/extensions/aws-lambda/main.go new file mode 100644 index 00000000..c78467d6 --- /dev/null +++ b/functions/extensions/aws-lambda/main.go @@ -0,0 +1,66 @@ +package main + +import ( + "context" + //"encoding/json" + //"fmt" + "github.com/aws/aws-lambda-go/lambda" + "net/http" +) + +type LambdaPayload struct { + RequestContext struct { + Elb struct { + TargetGroupArn string `json:"targetGroupArn"` + } `json:"elb"` + } `json:"requestContext"` + HTTPMethod string `json:"httpMethod"` + Path string `json:"path"` + Headers map[string]string `json:"headers"` + QueryStringParameters map[string]string `json:"queryStringParameters"` + Body string `json:"body"` + IsBase64Encoded bool `json:"isBase64Encoded"` +} + +type LambdaResponse struct { + IsBase64Encoded bool `json:"isBase64Encoded"` + StatusCode int `json:"statusCode"` + StatusDescription string `json:"statusDescription"` + Headers struct { + SetCookie string `json:"Set-cookie"` + ContentType string `json:"Content-Type"` + } `json:"headers"` + Body string `json:"body"` +} + +func lambda_handler(ctx context.Context, payload LambdaPayload) (LambdaResponse, error) { + response := &LambdaResponse{} + response.Headers.ContentType = "text/html" + response.StatusCode = http.StatusBadRequest + response.StatusDescription = http.StatusText(http.StatusBadRequest) + if payload.HTTPMethod == http.MethodGet && payload.Path == "/myfavoritecar" { + res := "TEST" + //car := &Car{} + //car.Model = "Corvette" + //car.Color = "Red" + //car.Year = 1999 + //res, err := json.Marshal(car) + //if err != nil { + // fmt.Println(err) + // response.StatusCode = http.StatusInternalServerError + // response.StatusDescription = http.StatusText(http.StatusInternalServerError) + // return *response, err + //} + response.Headers.ContentType = "application/json" + response.Body = string(res) + response.StatusCode = http.StatusOK + response.StatusDescription = http.StatusText(http.StatusOK) + return *response, nil + } else { + return *response, nil + } +} + +func main() { + lambda.Start(lambda_handler) +}