summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/labstack/echo/v4/json.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2021-07-31 18:27:55 +0200
committerGitHub <noreply@github.com>2021-07-31 18:27:55 +0200
commit44f3e2557dad86129419ed098c29e67638519f4f (patch)
tree17b8ddba49057cd8bf39cdf2618b31c7f6bc8c6a /vendor/github.com/labstack/echo/v4/json.go
parent1f365c716eae44b64dc5bdace5cb70441d7eb4c2 (diff)
downloadmatterbridge-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.go31
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
+}