diff options
Diffstat (limited to 'system/api/omit.go')
-rw-r--r-- | system/api/omit.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/system/api/omit.go b/system/api/omit.go index 46e172c..d907712 100644 --- a/system/api/omit.go +++ b/system/api/omit.go @@ -2,30 +2,33 @@ package api import ( "log" - "net/http" "github.com/ponzu-cms/ponzu/system/item" "github.com/tidwall/sjson" ) -func omit(it interface{}, res http.ResponseWriter, req *http.Request, data *[]byte) ([]byte, error) { +func omit(it interface{}, data []byte) ([]byte, error) { // is it Omittable om, ok := it.(item.Omittable) if !ok { - return *data, nil + return data, nil } + return omitFields(om, data, "data.0.") +} + +func omitFields(om item.Omittable, data []byte, pathPrefix string) ([]byte, error) { // get fields to omit from json data fields := om.Omit() // remove each field from json, all responses contain json object(s) in top-level "data" array - var omitted []byte + var omitted = data for i := range fields { var err error - omitted, err = sjson.DeleteBytes(*data, "data."+fields[i]) + omitted, err = sjson.DeleteBytes(omitted, pathPrefix+fields[i]) if err != nil { - log.Println("Erorr omitting field:", fields[i], "from item.Omittable:", it) + log.Println("Erorr omitting field:", fields[i], "from item.Omittable:", om) return nil, err } } |