diff options
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | core.go | 11 | ||||
-rw-r--r-- | http.go | 15 | ||||
-rw-r--r-- | tests/items.go | 4 | ||||
-rw-r--r-- | tests/test.go | 4 |
5 files changed, 14 insertions, 24 deletions
@@ -13,9 +13,7 @@ import ( ) type Item struct { - sleepy.PostNotSupported - sleepy.PutNotSupported - sleepy.DeleteNotSupported + sleepy.BaseResource } func (item Item) Get(values url.Values) (int, interface{}) { @@ -25,6 +25,7 @@ type Api struct{} func (api *Api) Abort(rw http.ResponseWriter, statusCode int) { rw.WriteHeader(statusCode) + rw.Write([]byte(http.StatusText(statusCode))) } func (api *Api) requestHandler(resource Resource) http.HandlerFunc { @@ -54,12 +55,12 @@ func (api *Api) requestHandler(resource Resource) http.HandlerFunc { return } - responseWriter := json.NewEncoder(rw) + content, err := json.Marshal(data) + if err != nil { + api.Abort(rw, 500) + } rw.WriteHeader(code) - if responseWriter.Encode(data) != nil { - api.Abort(rw, 500) - return - } + rw.Write(content) } } @@ -4,25 +4,20 @@ import ( "net/url" ) -type ( - GetNotSupported struct{} - PostNotSupported struct{} - PutNotSupported struct{} - DeleteNotSupported struct{} -) +type BaseResource struct{} -func (GetNotSupported) Get(values url.Values) (int, interface{}) { +func (BaseResource) Get(values url.Values) (int, interface{}) { return 405, "" } -func (PostNotSupported) Post(values url.Values) (int, interface{}) { +func (BaseResource) Post(values url.Values) (int, interface{}) { return 405, "" } -func (PutNotSupported) Put(values url.Values) (int, interface{}) { +func (BaseResource) Put(values url.Values) (int, interface{}) { return 405, "" } -func (DeleteNotSupported) Delete(values url.Values) (int, interface{}) { +func (BaseResource) Delete(values url.Values) (int, interface{}) { return 405, "" } diff --git a/tests/items.go b/tests/items.go index d39cae9..978b052 100644 --- a/tests/items.go +++ b/tests/items.go @@ -6,9 +6,7 @@ import ( ) type Item struct { - sleepy.PostNotSupported - sleepy.PutNotSupported - sleepy.DeleteNotSupported + sleepy.BaseResource } func (item Item) Get(values url.Values) (int, interface{}) { diff --git a/tests/test.go b/tests/test.go index 070d4b6..d3f414c 100644 --- a/tests/test.go +++ b/tests/test.go @@ -6,9 +6,7 @@ import ( ) type Bar struct { - sleepy.PostNotSupported - sleepy.PutNotSupported - sleepy.DeleteNotSupported + sleepy.BaseResource } func (b Bar) Get(values url.Values) (int, interface{}) { |