diff options
author | Alex Lobunets <alexander.lobunets@gmail.com> | 2014-02-07 10:02:41 +0100 |
---|---|---|
committer | Alex Lobunets <alexander.lobunets@gmail.com> | 2014-02-07 10:02:41 +0100 |
commit | d47df4de58172593c56513d37d2b75d4af578e58 (patch) | |
tree | 44c87db740ef852b085d4b526badd836d818c984 /core.go | |
parent | remove tests.test (diff) | |
download | sleepy-d47df4de58172593c56513d37d2b75d4af578e58.tar.gz sleepy-d47df4de58172593c56513d37d2b75d4af578e58.tar.bz2 sleepy-d47df4de58172593c56513d37d2b75d4af578e58.zip |
Added request headers as Get/Put/Post/Delete argument. Added response headers map as 3rd argument of the return from Get/Put/Post/Delete handlers. Thus, resource can access request headers and set custom response headers if required
Diffstat (limited to 'core.go')
-rw-r--r-- | core.go | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -18,25 +18,25 @@ const ( // GetSupported is the interface that provides the Get // method a resource must support to receive HTTP GETs. type GetSupported interface { - Get(url.Values) (int, interface{}) + Get(url.Values, map[string][]string) (int, interface{}, map[string][]string) } // PostSupported is the interface that provides the Post // method a resource must support to receive HTTP POSTs. type PostSupported interface { - Post(url.Values) (int, interface{}) + Post(url.Values, map[string][]string) (int, interface{}, map[string][]string) } // PutSupported is the interface that provides the Put // method a resource must support to receive HTTP PUTs. type PutSupported interface { - Put(url.Values) (int, interface{}) + Put(url.Values, map[string][]string) (int, interface{}, map[string][]string) } // DeleteSupported is the interface that provides the Delete // method a resource must support to receive HTTP DELETEs. type DeleteSupported interface { - Delete(url.Values) (int, interface{}) + Delete(url.Values, map[string][]string) (int, interface{}, map[string][]string) } // An API manages a group of resources by routing requests @@ -62,7 +62,7 @@ func (api *API) requestHandler(resource interface{}) http.HandlerFunc { return } - var handler func(url.Values) (int, interface{}) + var handler func(url.Values, map[string][]string) (int, interface{}, map[string][]string) switch request.Method { case GET: @@ -88,13 +88,18 @@ func (api *API) requestHandler(resource interface{}) http.HandlerFunc { return } - code, data := handler(request.Form) + code, data, headers := handler(request.Form, request.Header) content, err := json.Marshal(data) if err != nil { rw.WriteHeader(http.StatusInternalServerError) return } + for name, values := range headers { + for _, value := range values { + rw.Header().Add(name, value) + } + } rw.WriteHeader(code) rw.Write(content) } |