diff options
author | Wim <wim@42.be> | 2021-07-31 18:27:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-31 18:27:55 +0200 |
commit | 44f3e2557dad86129419ed098c29e67638519f4f (patch) | |
tree | 17b8ddba49057cd8bf39cdf2618b31c7f6bc8c6a /vendor/github.com/labstack/echo/v4/json.go | |
parent | 1f365c716eae44b64dc5bdace5cb70441d7eb4c2 (diff) | |
download | matterbridge-msglm-44f3e2557dad86129419ed098c29e67638519f4f.tar.gz matterbridge-msglm-44f3e2557dad86129419ed098c29e67638519f4f.tar.bz2 matterbridge-msglm-44f3e2557dad86129419ed098c29e67638519f4f.zip |
Update vendor (#1560)
Diffstat (limited to 'vendor/github.com/labstack/echo/v4/json.go')
-rw-r--r-- | vendor/github.com/labstack/echo/v4/json.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/vendor/github.com/labstack/echo/v4/json.go b/vendor/github.com/labstack/echo/v4/json.go new file mode 100644 index 00000000..16b2d057 --- /dev/null +++ b/vendor/github.com/labstack/echo/v4/json.go @@ -0,0 +1,31 @@ +package echo + +import ( + "encoding/json" + "fmt" + "net/http" +) + +// DefaultJSONSerializer implements JSON encoding using encoding/json. +type DefaultJSONSerializer struct{} + +// Serialize converts an interface into a json and writes it to the response. +// You can optionally use the indent parameter to produce pretty JSONs. +func (d DefaultJSONSerializer) Serialize(c Context, i interface{}, indent string) error { + enc := json.NewEncoder(c.Response()) + if indent != "" { + enc.SetIndent("", indent) + } + return enc.Encode(i) +} + +// Deserialize reads a JSON from a request body and converts it into an interface. +func (d DefaultJSONSerializer) Deserialize(c Context, i interface{}) error { + err := json.NewDecoder(c.Request().Body).Decode(i) + if ute, ok := err.(*json.UnmarshalTypeError); ok { + return NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Unmarshal type error: expected=%v, got=%v, field=%v, offset=%v", ute.Type, ute.Value, ute.Field, ute.Offset)).SetInternal(err) + } else if se, ok := err.(*json.SyntaxError); ok { + return NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Syntax error: offset=%v, error=%v", se.Offset, se.Error())).SetInternal(err) + } + return err +} |