services.go (916B)
1 package http 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "log" 7 "net/http" 8 "sermoni/internal/services" 9 "strconv" 10 11 "github.com/gorilla/mux" 12 ) 13 14 func getServices(w http.ResponseWriter, r *http.Request) { 15 s := services.GetAll() 16 data, err := json.Marshal(s) 17 check(err) 18 w.Write(data) 19 } 20 21 func postService(w http.ResponseWriter, r *http.Request) { 22 content, err := ioutil.ReadAll(r.Body) 23 check(err) 24 service := new(services.Service) 25 // TODO: Handle json parse error 26 err = json.Unmarshal(content, service) 27 check(err) 28 services.Add(service) 29 w.WriteHeader(http.StatusCreated) 30 } 31 32 func deleteService(w http.ResponseWriter, r *http.Request) { 33 vars := mux.Vars(r) 34 id, _ := strconv.ParseUint(vars["id"], 10, 64) 35 err := services.Delete(id) 36 if err != nil { 37 // TODO: "Non-existing" error is not an internal server error 38 log.Printf("deleteService error: %v\n", err) 39 w.WriteHeader(http.StatusInternalServerError) 40 } 41 }