From dcb233940461ac91ebf9b6a803668943785ddd24 Mon Sep 17 00:00:00 2001 From: emirbarucija Date: Thu, 17 May 2018 15:42:40 +0200 Subject: [PATCH] Added amazon folder and changed body of JSON return --- .../amazon/GO_API_service/GO_API/server.go | 98 +++++++++++++++++++ backend/amazon/GO_API_service/Makefile | 5 + .../GO_API_service/GO_API/server.go | 2 +- 3 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 backend/amazon/GO_API_service/GO_API/server.go create mode 100644 backend/amazon/GO_API_service/Makefile diff --git a/backend/amazon/GO_API_service/GO_API/server.go b/backend/amazon/GO_API_service/GO_API/server.go new file mode 100644 index 0000000..d8b396f --- /dev/null +++ b/backend/amazon/GO_API_service/GO_API/server.go @@ -0,0 +1,98 @@ +package main + +import ( + "net/http" + "fmt" + "encoding/json" + + "github.com/labstack/echo" + "github.com/labstack/echo/middleware" + "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/lambda" +) + +type User struct { + Username string + FirstName string + LastName string +} + +type Task struct { + Title string + Description string + UserOfTask User + Date string +} + +func main() { + lambda.Start(Handler) +} + +func Handler() (events.APIGatewayProxyResponse, error) { + e := echo.New() + + // Middleware + e.Use(middleware.Logger()) + e.Use(middleware.Recover()) + + // CORS + e.Use(middleware.CORSWithConfig(middleware.CORSConfig{ + AllowOrigins: []string{"*"}, + AllowMethods: []string{echo.GET, echo.HEAD, echo.PUT, echo.PATCH, echo.POST, echo.DELETE}, + })) + + // Getting JSON as []byte + b, err := convertTasksToJSON() + if err != nil { + fmt.Println("error:", err) + } + + // Route => handler + e.GET("/", func(c echo.Context) error { + return c.String(http.StatusOK, string(b[:])) + }) + + // Server + e.Start(":1500") + + return events.APIGatewayProxyResponse{ + Body: string(b[:]), + StatusCode: 200, + }, nil +} + +func convertTasksToJSON() ([]byte, error) { + user := User { + Username: "emirbarucija", + FirstName: "Emir", + LastName: "Baručija", + } + + task1 := Task { + Title: "First task", + Description: "This is my first task in GO language", + UserOfTask: user, + Date: "10.04.2018.", + } + + task2 := Task { + Title: "Second task", + Description: "This is my second task in GO language", + UserOfTask: user, + Date: "14.04.2018.", + } + + tasks := []Task{task1, task2} + + b, err := json.Marshal(tasks) + + return b, err +} + +func (u User) String() string { + return fmt.Sprintf("Username: %v\nFirst name: %v\nLast name: %v", u.Username, u.FirstName, u.LastName) +} + +func (t Task) String() string { + return fmt.Sprintf("Title: %v\nDescription: %v\nUser: %v\nDate: %v", t.Title, t.Description, t.UserOfTask, t.Date) +} \ No newline at end of file diff --git a/backend/amazon/GO_API_service/Makefile b/backend/amazon/GO_API_service/Makefile new file mode 100644 index 0000000..01c32ea --- /dev/null +++ b/backend/amazon/GO_API_service/Makefile @@ -0,0 +1,5 @@ +build: + go get github.com/aws/aws-lambda-go/lambda + go get github.com/aws/aws-lambda-go/events + env GOOS=linux go build -ldflags="-s -w" -o bin/GO_API GO_API/server.go + zip deployment.zip bin/GO_API \ No newline at end of file diff --git a/backend/serverless/GO_API_service/GO_API/server.go b/backend/serverless/GO_API_service/GO_API/server.go index 836992c..d8b396f 100644 --- a/backend/serverless/GO_API_service/GO_API/server.go +++ b/backend/serverless/GO_API_service/GO_API/server.go @@ -56,7 +56,7 @@ func Handler() (events.APIGatewayProxyResponse, error) { e.Start(":1500") return events.APIGatewayProxyResponse{ - Body: b, + Body: string(b[:]), StatusCode: 200, }, nil }