From eafe710b2359e45712d120528cd8605cbdfec8bd Mon Sep 17 00:00:00 2001 From: Oren Rosen Date: Mon, 28 Nov 2022 13:30:57 +0200 Subject: [PATCH] add solution --- coolfacts/cmd/coolfacts_server/server.go | 47 +++++++++++++++--------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/coolfacts/cmd/coolfacts_server/server.go b/coolfacts/cmd/coolfacts_server/server.go index cb34514..9f18ebc 100644 --- a/coolfacts/cmd/coolfacts_server/server.go +++ b/coolfacts/cmd/coolfacts_server/server.go @@ -1,6 +1,7 @@ package main import ( + "encoding/json" "fmt" "log" "net/http" @@ -10,7 +11,7 @@ import ( type server struct{} func NewServer() *server { - // TODO: returns an initializes server with the factsService + return &server{} } func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) { @@ -34,30 +35,40 @@ func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) { func (s *server) HandlePing(w http.ResponseWriter) { log.Println("Handling Ping ...") - // TODO - // 1. write status header 200 using constant http.StatusOK - // 3. write ping + w.WriteHeader(http.StatusOK) + + if _, err := fmt.Fprint(w, "PONG"); err != nil { + fmt.Printf("ERROR writing to ResponseWriter: %s\n", err) + return + } } func (s *server) HandleNotFound(w http.ResponseWriter, err error) { log.Println("Handling notFound ...") - // TODO: - // 1. write status header 404 using - // 2. set content type application/json - // 3. write json indicating an error: - // { - // error: - // } + + w.WriteHeader(http.StatusNotFound) + w.Header().Set("Content-Type", "application/json") + + response := map[string]string{ + "error": err.Error(), + } + + if err := json.NewEncoder(w).Encode(response); err != nil { + fmt.Printf("HandleGetFacts ERROR writing response: %s", err) + } } func (s *server) HandleError(w http.ResponseWriter, err error) { log.Println("Handling error ...") - // TODO: - // 1. write status header 500 - // 2. set content type application/json - // 3. write json indicating an error: - // { - // error: - // } + w.WriteHeader(http.StatusInternalServerError) + w.Header().Set("Content-Type", "application/json") + + response := map[string]string{ + "error": err.Error(), + } + + if err := json.NewEncoder(w).Encode(response); err != nil { + fmt.Printf("HandleGetFacts ERROR writing response: %s", err) + } }