diff --git a/README.md b/README.md index 1d54836..4308772 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ -# e3792a82c8574b9a9bffbea4cd736d03 - +# go hello-world diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..44a9a84 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module example.com/main + +go 1.17 + +require github.com/OpenFunction/functions-framework-go v0.5.0 \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 0000000..2febe5b --- /dev/null +++ b/main.go @@ -0,0 +1,55 @@ +package something + +import ( + "encoding/json" + "fmt" + "log" + "net/http" +) + +// RequestData represents the JSON structure for incoming requests +type RequestData struct { + A int `json:"a"` + B int `json:"b"` +} + +// mainHandler handles HTTP requests and processes the data +func Main(w http.ResponseWriter, r *http.Request) { + log.Println("Function called with request") + + // Decode the JSON body into the RequestData struct + var data RequestData + err := json.NewDecoder(r.Body).Decode(&data) + if err != nil { + http.Error(w, "Invalid JSON payload", http.StatusBadRequest) + log.Println("Error decoding JSON:", err) + return + } + + log.Printf("Received data: %+v\n", data) + + // Compute the result + result := data.A + data.B + + // Prepare the response + response := map[string]int{"result": result} + + // Encode the response as JSON + w.Header().Set("Content-Type", "application/json") + err = json.NewEncoder(w).Encode(response) + if err != nil { + http.Error(w, "Error encoding response", http.StatusInternalServerError) + log.Println("Error encoding JSON:", err) + return + } + + log.Println("Response sent successfully") +} + +func init() { + // Set up the HTTP server + http.HandleFunc("/Main", Main) + + fmt.Println("Server is running on http://localhost:8080") + log.Fatal(http.ListenAndServe(":8080", nil)) +} \ No newline at end of file