diff --git a/main/main.go b/main/main.go index 7057e32cd89af4a225857c5f248fcfc9679fdee1..11db3bbf04ece07fc559c37582cb91ed74e8b674 100644 --- a/main/main.go +++ b/main/main.go @@ -31,6 +31,7 @@ func main() { router.HandleFunc("/health", handler.Health).Methods("GET") router.HandleFunc("/campaign", handler.CreateCampaign).Methods("POST") router.HandleFunc("/campaigns", handler.GetCampaigns).Methods("GET") + router.HandleFunc("/campaign/{id}", handler.GetCampaign2).Methods("GET") if err := http.ListenAndServe(":8000", router); err != nil { log.Fatal(err) } diff --git a/src/myaktion/handler/campaign.go b/src/myaktion/handler/campaign.go index 9eb9f9ea4fffa75f32d77234419619dc1c3c9194..3315e491ce72cfeac923aec1674edf1f2cf5660c 100644 --- a/src/myaktion/handler/campaign.go +++ b/src/myaktion/handler/campaign.go @@ -44,3 +44,21 @@ func GetCampaign(r *http.Request) (*model.Campaign, error) { } return &campaign, nil } + +func GetCampaign2(w http.ResponseWriter, r *http.Request) { + id, idErr := getId(r) + if idErr != nil { + log.Errorf("Error calling service getId: %v", idErr) + http.Error(w, idErr.Error(), http.StatusInternalServerError) + return + } + + resCampaign, err := service.GetCampaign2(id) + if err != nil { + log.Errorf("Error calling service GetCampaign: %v", err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + log.Infof("Campaign with the ID %v was printed", resCampaign.ID) + sendJson(w, resCampaign) +} diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go index 7963eb6097f2d4ef8071643468888d75722dc2e9..61eb1f6090e4b7b38b0bccd16f9c8ac67ef374a4 100644 --- a/src/myaktion/service/campaign.go +++ b/src/myaktion/service/campaign.go @@ -1,6 +1,8 @@ package service import ( + "errors" + log "github.com/sirupsen/logrus" "gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/model" @@ -32,3 +34,16 @@ func GetCampaigns() ([]model.Campaign, error) { log.Tracef("Retrieved: %v", campaigns) return campaigns, nil } + +func GetCampaign2(requestedID uint) (model.Campaign, error) { + var resCampaign model.Campaign + for _, campaign := range campaignStore { + if campaign.ID == requestedID { + resCampaign = *campaign + log.Tracef("Retrieved: %v", resCampaign) + + return resCampaign, nil + } + } + return resCampaign, errors.New("keine Campaign mit der ID wurde gefunden") +}