package api import ( "cloudsave/pkg/remote/obj" "encoding/json" "log" "net/http" "time" ) func internalServerError(w http.ResponseWriter, r *http.Request) { e := obj.HTTPError{ HTTPCore: obj.HTTPCore{ Status: http.StatusInternalServerError, Path: r.RequestURI, Timestamp: time.Now(), }, Error: "Internal Server Error", Message: "The server encountered an unexpected condition that prevented it from fulfilling the request.", } payload, err := json.Marshal(e) if err != nil { log.Println(err) } w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusInternalServerError) _, err = w.Write(payload) if err != nil { log.Println(err) } } func notFound(message string, w http.ResponseWriter, r *http.Request) { e := obj.HTTPError{ HTTPCore: obj.HTTPCore{ Status: http.StatusNotFound, Path: r.RequestURI, Timestamp: time.Now(), }, Error: "Not Found", Message: message, } payload, err := json.Marshal(e) if err != nil { log.Println(err) } w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusNotFound) _, err = w.Write(payload) if err != nil { log.Println(err) } } func methodNotAllowed(w http.ResponseWriter, r *http.Request) { e := obj.HTTPError{ HTTPCore: obj.HTTPCore{ Status: http.StatusMethodNotAllowed, Path: r.RequestURI, Timestamp: time.Now(), }, Error: "Method Not Allowed", Message: "The server knows the request method, but the target resource doesn't support this method", } payload, err := json.Marshal(e) if err != nil { log.Println(err) } w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusMethodNotAllowed) _, err = w.Write(payload) if err != nil { log.Println(err) } } func unauthorized(w http.ResponseWriter, r *http.Request) { e := obj.HTTPError{ HTTPCore: obj.HTTPCore{ Status: http.StatusUnauthorized, Path: r.RequestURI, Timestamp: time.Now(), }, Error: "Unauthorized", Message: "The request has not been completed because it lacks valid authentication credentials for the requested resource.", } payload, err := json.Marshal(e) if err != nil { log.Println(err) } w.Header().Add("Content-Type", "application/json") w.Header().Add("WWW-Authenticate", "Custom realm=\"loginUserHandler via /api/login\"") w.WriteHeader(http.StatusUnauthorized) _, err = w.Write(payload) if err != nil { log.Println(err) } } func ok(o interface{}, w http.ResponseWriter, r *http.Request) { e := obj.HTTPObject{ HTTPCore: obj.HTTPCore{ Status: http.StatusOK, Path: r.RequestURI, Timestamp: time.Now(), }, Data: o, } payload, err := json.Marshal(e) if err != nil { log.Println(err) } w.Header().Add("Content-Type", "application/json") _, err = w.Write(payload) if err != nil { log.Println(err) } } func badRequest(message string, w http.ResponseWriter, r *http.Request) { e := obj.HTTPError{ HTTPCore: obj.HTTPCore{ Status: http.StatusBadRequest, Path: r.RequestURI, Timestamp: time.Now(), }, Error: "Bad Request", Message: message, } payload, err := json.Marshal(e) if err != nil { log.Println(err) } w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusBadRequest) _, err = w.Write(payload) if err != nil { log.Println(err) } }