Skip to content

Commit 6f12850

Browse files
committed
refactor: added some errors and nil checkers
1 parent 1205fbe commit 6f12850

File tree

9 files changed

+88
-16
lines changed

9 files changed

+88
-16
lines changed

decoder/errors.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ import (
66

77
var (
88
ErrInvalidInstance = errors.New("invalid instance provided to create a reader")
9+
ErrNilBody = errors.New("body cannot be nil")
10+
ErrNilReader = errors.New("reader cannot be nil")
11+
ErrNilDestination = errors.New("destination cannot be nil")
12+
ErrNilDecoder = errors.New("decoder is nil")
913
)

decoder/json/decoder.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ func (d Decoder) Decode(
3535
body interface{},
3636
dest interface{},
3737
) error {
38+
// Check the body
39+
if body == nil {
40+
return gojsondecoder.ErrNilBody
41+
}
42+
3843
// Check the body type
3944
reader, err := gojsondecoder.ToReader(body)
4045
if err != nil {
@@ -57,9 +62,14 @@ func (d Decoder) DecodeReader(
5762
reader io.Reader,
5863
dest interface{},
5964
) (err error) {
65+
// Check the reader
66+
if reader == nil {
67+
return gojsondecoder.ErrNilReader
68+
}
69+
6070
// Check the decoder destination
6171
if dest == nil {
62-
return ErrNilDestination
72+
return gojsondecoder.ErrNilDestination
6373
}
6474

6575
// Get the body of the request

decoder/json/errors.go

Lines changed: 0 additions & 14 deletions
This file was deleted.

decoder/json/stream_decoder.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ func (s StreamDecoder) Decode(
3535
body interface{},
3636
dest interface{},
3737
) error {
38+
// Check the body
39+
if body == nil {
40+
return gojsondecoder.ErrNilBody
41+
}
42+
3843
// Check the body type
3944
reader, err := gojsondecoder.ToReader(body)
4045
if err != nil {
@@ -57,9 +62,14 @@ func (s StreamDecoder) DecodeReader(
5762
reader io.Reader,
5863
dest interface{},
5964
) error {
65+
// Check the reader
66+
if reader == nil {
67+
return gojsondecoder.ErrNilReader
68+
}
69+
6070
// Check the decoder destination
6171
if dest == nil {
62-
return ErrNilDestination
72+
return gojsondecoder.ErrNilDestination
6373
}
6474

6575
// Create the stream decoder

decoder/protojson/decoder.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ func (d Decoder) Decode(
4444
body interface{},
4545
dest interface{},
4646
) error {
47+
// Check the body
48+
if body == nil {
49+
return gojsondecoder.ErrNilBody
50+
}
51+
4752
// Check the body type
4853
reader, err := gojsondecoder.ToReader(body)
4954
if err != nil {
@@ -66,6 +71,16 @@ func (d Decoder) DecodeReader(
6671
reader io.Reader,
6772
dest interface{},
6873
) error {
74+
// Check the reader
75+
if reader == nil {
76+
return gojsondecoder.ErrNilReader
77+
}
78+
79+
// Check the decoder destination
80+
if dest == nil {
81+
return gojsondecoder.ErrNilDestination
82+
}
83+
6984
return UnmarshalByReflection(
7085
reader,
7186
dest,

encoder/errors.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package encoder
2+
3+
import (
4+
"errors"
5+
)
6+
7+
var (
8+
ErrNilWriter = errors.New("writer is nil")
9+
ErrNilBody = errors.New("body cannot be nil")
10+
ErrNilEncoder = errors.New("encoder is nil")
11+
)

encoder/json/encoder.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package json
33
import (
44
"encoding/json"
55
"io"
6+
7+
gojsonencoder "github.com/ralvarezdev/go-json/encoder"
68
)
79

810
type (
@@ -32,6 +34,12 @@ func NewEncoder() *Encoder {
3234
func (e Encoder) Encode(
3335
body interface{},
3436
) ([]byte, error) {
37+
// Check if body is nil
38+
if body == nil {
39+
return nil, gojsonencoder.ErrNilBody
40+
}
41+
42+
// Marshal the body into JSON
3543
jsonBody, err := json.Marshal(body)
3644
if err != nil {
3745
return nil, err
@@ -55,6 +63,11 @@ func (e Encoder) EncodeAndWrite(
5563
beforeWriteFn func() error,
5664
body interface{},
5765
) error {
66+
// Check if the writer is nil
67+
if writer == nil {
68+
return gojsonencoder.ErrNilWriter
69+
}
70+
5871
// Encode the body into JSON
5972
jsonBody, err := e.Encode(body)
6073
if err != nil {

encoder/json/stream_encoder.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"bytes"
66
"encoding/json"
77
"io"
8+
9+
gojsonencoder "github.com/ralvarezdev/go-json/encoder"
810
)
911

1012
type (
@@ -34,6 +36,11 @@ func NewStreamEncoder() *StreamEncoder {
3436
func (s StreamEncoder) Encode(
3537
body interface{},
3638
) ([]byte, error) {
39+
// Check if body is nil
40+
if body == nil {
41+
return nil, gojsonencoder.ErrNilBody
42+
}
43+
3744
// Create a buffer to write to
3845
buffer := new(bytes.Buffer)
3946

@@ -69,6 +76,11 @@ func (s StreamEncoder) EncodeAndWrite(
6976
beforeWriteFn func() error,
7077
body interface{},
7178
) (err error) {
79+
// Check if the writer is nil
80+
if writer == nil {
81+
return gojsonencoder.ErrNilWriter
82+
}
83+
7284
// Call the before write function if provided
7385
if beforeWriteFn != nil {
7486
if err = beforeWriteFn(); err != nil {

encoder/protojson/encoder.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"io"
55
"reflect"
66

7+
gojsonencoder "github.com/ralvarezdev/go-json/encoder"
78
gojsonencoderjson "github.com/ralvarezdev/go-json/encoder/json"
89
"google.golang.org/protobuf/encoding/protojson"
910
)
@@ -74,6 +75,11 @@ func (e Encoder) PrecomputeMarshal(
7475
func (e Encoder) Encode(
7576
body interface{},
7677
) ([]byte, error) {
78+
// Check if body is nil
79+
if body == nil {
80+
return nil, gojsonencoder.ErrNilBody
81+
}
82+
7783
// Marshal the instance to get the precomputed body
7884
precomputedMarshal, err := e.PrecomputeMarshal(body)
7985
if err != nil {
@@ -98,6 +104,11 @@ func (e Encoder) EncodeAndWrite(
98104
beforeWriteFn func() error,
99105
body interface{},
100106
) error {
107+
// Check if the writer is nil
108+
if writer == nil {
109+
return gojsonencoder.ErrNilWriter
110+
}
111+
101112
// Marshal the instance to get the precomputed body
102113
precomputedMarshal, err := e.PrecomputeMarshal(body)
103114
if err != nil {

0 commit comments

Comments
 (0)