aboutsummaryrefslogtreecommitdiff
path: root/core.go
diff options
context:
space:
mode:
Diffstat (limited to 'core.go')
-rw-r--r--core.go24
1 files changed, 23 insertions, 1 deletions
diff --git a/core.go b/core.go
index 1c16cfb..631d76d 100644
--- a/core.go
+++ b/core.go
@@ -13,6 +13,8 @@ const (
POST = "POST"
PUT = "PUT"
DELETE = "DELETE"
+ HEAD = "HEAD"
+ PATCH = "PATCH"
)
// GetSupported is the interface that provides the Get
@@ -39,6 +41,18 @@ type DeleteSupported interface {
Delete(url.Values, http.Header) (int, interface{}, http.Header)
}
+// HeadSupported is the interface that provides the Head
+// method a resource must support to receive HTTP HEADs.
+type HeadSupported interface {
+ Head(url.Values, http.Header) (int, interface{}, http.Header)
+}
+
+// PatchSupported is the interface that provides the Patch
+// method a resource must support to receive HTTP PATCHs.
+type PatchSupported interface {
+ Patch(url.Values, http.Header) (int, interface{}, http.Header)
+}
+
// An API manages a group of resources by routing requests
// to the correct method on a matching resource and marshalling
// the returned data to JSON for the HTTP response.
@@ -82,6 +96,14 @@ func (api *API) requestHandler(resource interface{}) http.HandlerFunc {
if resource, ok := resource.(DeleteSupported); ok {
handler = resource.Delete
}
+ case HEAD:
+ if resource, ok := resource.(HeadSupported); ok {
+ handler = resource.Head
+ }
+ case PATCH:
+ if resource, ok := resource.(PatchSupported); ok {
+ handler = resource.Patch
+ }
}
if handler == nil {
@@ -91,7 +113,7 @@ func (api *API) requestHandler(resource interface{}) http.HandlerFunc {
code, data, header := handler(request.Form, request.Header)
- content, err := json.Marshal(data)
+ content, err := json.MarshalIndent(data, "", " ")
if err != nil {
rw.WriteHeader(http.StatusInternalServerError)
return
bgstack15