7
7
"io"
8
8
"net"
9
9
"time"
10
-
11
- "github.com./scaleway/scaleway-sdk-go/internal/errors"
12
10
)
13
11
14
12
// ServiceInfo contains API metadata
@@ -143,23 +141,23 @@ func (tsp *TimeSeriesPoint) UnmarshalJSON(b []byte) error {
143
141
}
144
142
145
143
if len (point ) != 2 {
146
- return errors . New ("invalid point array" )
144
+ return fmt . Errorf ("invalid point array" )
147
145
}
148
146
149
147
strTimestamp , isStrTimestamp := point [0 ].(string )
150
148
if ! isStrTimestamp {
151
- return errors . New ("%s timestamp is not a string in RFC 3339 format" , point [0 ])
149
+ return fmt . Errorf ("%s timestamp is not a string in RFC 3339 format" , point [0 ])
152
150
}
153
151
timestamp , err := time .Parse (time .RFC3339 , strTimestamp )
154
152
if err != nil {
155
- return errors . New ("%s timestamp is not in RFC 3339 format" , point [0 ])
153
+ return fmt . Errorf ("%s timestamp is not in RFC 3339 format" , point [0 ])
156
154
}
157
155
tsp .Timestamp = timestamp
158
156
159
157
// By default, JSON unmarshal a float in float64 but the TimeSeriesPoint is a float32 value.
160
158
value , isValue := point [1 ].(float64 )
161
159
if ! isValue {
162
- return errors . New ("%s is not a valid float32 value" , point [1 ])
160
+ return fmt . Errorf ("%s is not a valid float32 value" , point [1 ])
163
161
}
164
162
tsp .Value = float32 (value )
165
163
@@ -172,30 +170,35 @@ type IPNet struct {
172
170
}
173
171
174
172
func (n IPNet ) MarshalJSON () ([]byte , error ) {
175
- return []byte (`"` + n .String () + `"` ), nil
173
+ value := n .String ()
174
+ if value == "<nil>" {
175
+ value = ""
176
+ }
177
+ return []byte (`"` + value + `"` ), nil
176
178
}
177
179
178
180
func (n * IPNet ) UnmarshalJSON (b []byte ) error {
179
- var str * string
181
+ var str string
180
182
181
183
err := json .Unmarshal (b , & str )
182
184
if err != nil {
183
185
return err
184
186
}
185
- if str == nil {
187
+ if str == "" {
188
+ * n = IPNet {}
186
189
return nil
187
190
}
188
191
189
- switch ip := net .ParseIP (* str ); {
192
+ switch ip := net .ParseIP (str ); {
190
193
case ip .To4 () != nil :
191
- * str += "/32"
194
+ str += "/32"
192
195
case ip .To16 () != nil :
193
- * str += "/128"
196
+ str += "/128"
194
197
}
195
198
196
- _ , value , err := net .ParseCIDR (* str )
199
+ _ , value , err := net .ParseCIDR (str )
197
200
if err != nil {
198
- return errors . Wrap ( err , "cannot decode JSON" )
201
+ return err
199
202
}
200
203
n .IPNet = * value
201
204
0 commit comments