aboutsummaryrefslogtreecommitdiff
path: root/core.go
diff options
context:
space:
mode:
Diffstat (limited to 'core.go')
-rw-r--r--core.go17
1 files changed, 11 insertions, 6 deletions
diff --git a/core.go b/core.go
index 0ef5590..6023014 100644
--- a/core.go
+++ b/core.go
@@ -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)
}
bgstack15