-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcodec.go
More file actions
41 lines (33 loc) · 915 Bytes
/
codec.go
File metadata and controls
41 lines (33 loc) · 915 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package jsonapi
import (
"encoding/json"
"io"
"github.com/neuronlabs/neuron/codec"
"github.com/neuronlabs/neuron/controller"
)
// Codec gets the Codec value.
func GetCodec(c *controller.Controller) codec.Codec {
return Codec{c: c}
}
var _ codec.Codec = &Codec{}
// Codec is jsonapi model
type Codec struct {
c *controller.Controller
}
// MarshalErrors implements neuronCodec.Codec interface.
func (c Codec) MarshalErrors(w io.Writer, errors ...*codec.Error) error {
p := ErrorsPayload{Errors: errors}
return json.NewEncoder(w).Encode(&p)
}
// UnmarshalErrors implements neuronCodec.Codec interface.
func (c Codec) UnmarshalErrors(r io.Reader) (codec.MultiError, error) {
p := &ErrorsPayload{}
if err := json.NewDecoder(r).Decode(p); err != nil {
return nil, err
}
return p.Errors, nil
}
// MimeType implements neuronCodec.Codec interface.
func (c Codec) MimeType() string {
return MimeType
}