From 2978693de044e8ed334663cb303ba4ebeab502f6 Mon Sep 17 00:00:00 2001 From: Emanuel <Emanuel.Petrinovic@Student.Reutlingen-University.DE> Date: Mon, 14 Apr 2025 13:33:04 +0200 Subject: [PATCH] add campaigns POST --- src/myaktion/handler/campaign.go | 30 ++++++++++++++++++++++++++++++ src/myaktion/main.go | 1 + src/myaktion/service/campaign.go | 2 +- 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/myaktion/handler/campaign.go diff --git a/src/myaktion/handler/campaign.go b/src/myaktion/handler/campaign.go new file mode 100644 index 0000000..5caad3b --- /dev/null +++ b/src/myaktion/handler/campaign.go @@ -0,0 +1,30 @@ +package handler + +import ( + "encoding/json" + "log" + "net/http" + + "gitlab.reutlingen-university.de/petrinov/myaktion-go/model" + "gitlab.reutlingen-university.de/petrinov/myaktion-go/service" +) + +func CreateCampaign(w http.ResponseWriter, r *http.Request) { + var campaign model.Campaign + err := json.NewDecoder(r.Body).Decode(&campaign) + if err != nil { + log.Printf("Can't serialize request body to campaign struct: %v", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := service.CreateCampaign(&campaign); err != nil { + log.Printf("Error calling service CreateCampaign: %v", err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json") + if err := json.NewEncoder(w).Encode(campaign); err != nil { + log.Printf("Failure encoding value to JSON: %v", err) + http.Error(w, err.Error(), http.StatusInternalServerError) + } +} diff --git a/src/myaktion/main.go b/src/myaktion/main.go index 787e22e..2880dbf 100644 --- a/src/myaktion/main.go +++ b/src/myaktion/main.go @@ -12,6 +12,7 @@ func main() { log.Println("Starting My-Aktion API server") router := mux.NewRouter() router.HandleFunc("/health", handler.Health).Methods("GET") + router.HandleFunc("/campagins", handler.CreateCampaign).Methods("POST") if err := http.ListenAndServe(":8000", router); err != nil { log.Fatal(err) } diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go index b911611..d8b4456 100644 --- a/src/myaktion/service/campaign.go +++ b/src/myaktion/service/campaign.go @@ -3,7 +3,7 @@ package service import ( "log" - model "gitlab.reutlingen-university.de/petrinov/myaktion-go/Model" + model "gitlab.reutlingen-university.de/petrinov/myaktion-go/model" ) var ( -- GitLab