Skip to content
Snippets Groups Projects
Commit 8bdeb9fa authored by Sercan Yesildal's avatar Sercan Yesildal
Browse files

refactoring and utility functions added

parent c3a4cab3
No related branches found
No related tags found
No related merge requests found
...@@ -2,13 +2,23 @@ package handler ...@@ -2,13 +2,23 @@ package handler
import ( import (
"encoding/json" "encoding/json"
"log"
"net/http" "net/http"
log "github.com/sirupsen/logrus"
"gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/model" "gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/model"
"gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/service" "gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/service"
) )
func getCampaign(r *http.Request) (*model.Campaign, error) {
var campaign model.Campaign
err := json.NewDecoder(r.Body).Decode(&campaign)
if err != nil {
log.Errorf("Can't serialize request body to campaign struct: %v", err)
return nil, err
}
return &campaign, nil
}
func GetCampaigns(w http.ResponseWriter, _ *http.Request) { func GetCampaigns(w http.ResponseWriter, _ *http.Request) {
campaigns, err := service.GetCampaigns() campaigns, err := service.GetCampaigns()
if err != nil { if err != nil {
...@@ -16,29 +26,20 @@ func GetCampaigns(w http.ResponseWriter, _ *http.Request) { ...@@ -16,29 +26,20 @@ func GetCampaigns(w http.ResponseWriter, _ *http.Request) {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
w.Header().Set("Content-Type", "application/json") sendJson(w, campaigns)
if err := json.NewEncoder(w).Encode(campaigns); err != nil {
log.Printf("Failure encoding value to JSON: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
}
} }
func CreateCampaign(w http.ResponseWriter, r *http.Request) { func CreateCampaign(w http.ResponseWriter, r *http.Request) {
var campaign model.Campaign var campaign *model.Campaign
err := json.NewDecoder(r.Body).Decode(&campaign) campaign, err := getCampaign(r)
if err != nil { if err != nil {
log.Printf("Can't serialize request body to campaign struct: %v", err)
http.Error(w, err.Error(), http.StatusBadRequest) http.Error(w, err.Error(), http.StatusBadRequest)
return return
} }
if err := service.CreateCampaign(&campaign); err != nil { if err := service.CreateCampaign(campaign); err != nil {
log.Printf("Error calling service CreateCampaign: %v", err) log.Printf("Error calling service CreateCampaign: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
w.Header().Set("Content-Type", "application/json") sendJson(w, campaign)
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)
}
} }
package handler
import (
"encoding/json"
"net/http"
"strconv"
"github.com/gorilla/mux"
log "github.com/sirupsen/logrus"
)
type result struct {
Success string `json:"success"`
}
func sendJson(w http.ResponseWriter, value interface{}) {
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(value); err != nil {
log.Errorf("Failure encoding value to JSON: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
func getId(r *http.Request) (uint, error) {
vars := mux.Vars(r)
id, err := strconv.ParseUint(vars["id"], 10, 0)
if err != nil {
log.Errorf("Can't get ID from request: %v", err)
return 0, err
}
return uint(id), nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment