Simplify helpers

This commit is contained in:
Clayton Coleman 2014-07-29 18:10:29 -04:00
parent c7d311896e
commit a2c86e4c97
2 changed files with 24 additions and 24 deletions

View File

@ -169,7 +169,7 @@ func (s *APIServer) write(statusCode int, object interface{}, w http.ResponseWri
func (s *APIServer) writeRawJSON(statusCode int, object interface{}, w http.ResponseWriter) {
output, err := json.Marshal(object)
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
w.Header().Set("Content-Type", "application/json")
@ -177,16 +177,6 @@ func (s *APIServer) writeRawJSON(statusCode int, object interface{}, w http.Resp
w.Write(output)
}
func (s *APIServer) error(err error, w http.ResponseWriter) {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Internal Error: %#v", err)
}
func (s *APIServer) readBody(req *http.Request) ([]byte, error) {
defer req.Body.Close()
return ioutil.ReadAll(req.Body)
}
// finishReq finishes up a request, waiting until the operation finishes or, after a timeout, creating an
// Operation to receive the result and returning its ID down the writer.
func (s *APIServer) finishReq(out <-chan interface{}, sync bool, timeout time.Duration, w http.ResponseWriter) {
@ -247,12 +237,12 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
case 1:
selector, err := labels.ParseSelector(req.URL.Query().Get("labels"))
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
list, err := storage.List(selector)
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
s.write(http.StatusOK, list, w)
@ -263,7 +253,7 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
return
}
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
s.write(http.StatusOK, item, w)
@ -275,9 +265,9 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
notFound(w, req)
return
}
body, err := s.readBody(req)
body, err := readBody(req)
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
obj, err := storage.Extract(body)
@ -286,7 +276,7 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
return
}
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
out, err := storage.Create(obj)
@ -295,7 +285,7 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
return
}
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
s.finishReq(out, sync, timeout, w)
@ -310,7 +300,7 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
return
}
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
s.finishReq(out, sync, timeout, w)
@ -319,9 +309,9 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
notFound(w, req)
return
}
body, err := s.readBody(req)
body, err := readBody(req)
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
obj, err := storage.Extract(body)
@ -330,7 +320,7 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
return
}
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
out, err := storage.Update(obj)
@ -339,7 +329,7 @@ func (s *APIServer) handleREST(parts []string, req *http.Request, w http.Respons
return
}
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
s.finishReq(out, sync, timeout, w)
@ -408,7 +398,7 @@ func (s *APIServer) handleWatch(w http.ResponseWriter, req *http.Request) {
watching, err = watcher.WatchAll()
}
if err != nil {
s.error(err, w)
internalError(err, w)
return
}
@ -425,3 +415,8 @@ func (s *APIServer) handleWatch(w http.ResponseWriter, req *http.Request) {
notFound(w, req)
}
func readBody(req *http.Request) ([]byte, error) {
defer req.Body.Close()
return ioutil.ReadAll(req.Body)
}

View File

@ -21,6 +21,11 @@ import (
"net/http"
)
func internalError(err error, w http.ResponseWriter) {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Internal Error: %#v", err)
}
// notFound renders a simple not found error
func notFound(w http.ResponseWriter, req *http.Request) {
w.WriteHeader(http.StatusNotFound)