@@ -50,9 +50,6 @@ const (
50
50
)
51
51
52
52
var (
53
- // ErrResponse is returned when we were able to contact API but request was not successful and contains error details.
54
- ErrResponse = errors .New ("The MessageBird API returned an error" )
55
-
56
53
// ErrUnexpectedResponse is used when there was an internal server error and nothing can be done at this point.
57
54
ErrUnexpectedResponse = errors .New ("The MessageBird API is currently unavailable" )
58
55
)
@@ -63,118 +60,20 @@ type Client struct {
63
60
AccessKey string // The API access key
64
61
HTTPClient * http.Client // The HTTP client to send requests on
65
62
DebugLog * log.Logger // Optional logger for debugging purposes
66
- request func (c * Client , v interface {}, method , path string , data interface {}) error
67
- }
68
-
69
- // NewV2 creates a new MessageBird client object.
70
- // If the request to MessageBird API will return an
71
- // error, it will be returned as ErrorResponse instance
72
- // typed as the error, containing all codes,
73
- // descriptions and properies.
74
- func NewV2 (accessKey string ) * Client {
75
- return & Client {
76
- AccessKey : accessKey ,
77
- HTTPClient : & http.Client {
78
- Timeout : httpClientTimeout ,
79
- },
80
- request : requestV2 ,
81
- }
82
63
}
83
64
84
65
// New creates a new MessageBird client object.
85
- // If the request to MessageBird API will return
86
- // and error, it will simply return ErrResponse.
87
- // Deprecated: use NewV2 until v2 release.
88
66
func New (accessKey string ) * Client {
89
67
return & Client {
90
68
AccessKey : accessKey ,
91
69
HTTPClient : & http.Client {
92
70
Timeout : httpClientTimeout ,
93
71
},
94
- request : requestV1 ,
95
72
}
96
73
}
97
74
98
75
// Request is for internal use only and unstable.
99
76
func (c * Client ) Request (v interface {}, method , path string , data interface {}) error {
100
- return c .request (c , v , method , path , data )
101
- }
102
-
103
- func requestV1 (c * Client , v interface {}, method , path string , data interface {}) error {
104
- if ! strings .HasPrefix (path , "https://" ) && ! strings .HasPrefix (path , "http://" ) {
105
- path = fmt .Sprintf ("%s/%s" , Endpoint , path )
106
- }
107
- uri , err := url .Parse (path )
108
- if err != nil {
109
- return err
110
- }
111
-
112
- var jsonEncoded []byte
113
- if data != nil {
114
- jsonEncoded , err = json .Marshal (data )
115
- if err != nil {
116
- return err
117
- }
118
- }
119
-
120
- request , err := http .NewRequest (method , uri .String (), bytes .NewBuffer (jsonEncoded ))
121
- if err != nil {
122
- return err
123
- }
124
-
125
- request .Header .Set ("Content-Type" , "application/json" )
126
- request .Header .Set ("Accept" , "application/json" )
127
- request .Header .Set ("Authorization" , "AccessKey " + c .AccessKey )
128
- request .Header .Set ("User-Agent" , "MessageBird/ApiClient/" + ClientVersion + " Go/" + runtime .Version ())
129
-
130
- if c .DebugLog != nil {
131
- if data != nil {
132
- c .DebugLog .Printf ("HTTP REQUEST: %s %s %s" , method , uri .String (), jsonEncoded )
133
- } else {
134
- c .DebugLog .Printf ("HTTP REQUEST: %s %s" , method , uri .String ())
135
- }
136
- }
137
-
138
- response , err := c .HTTPClient .Do (request )
139
- if err != nil {
140
- return err
141
- }
142
-
143
- defer response .Body .Close ()
144
-
145
- responseBody , err := ioutil .ReadAll (response .Body )
146
- if err != nil {
147
- return err
148
- }
149
-
150
- if c .DebugLog != nil {
151
- c .DebugLog .Printf ("HTTP RESPONSE: %s" , string (responseBody ))
152
- }
153
-
154
- // Status code 500 is a server error and means nothing can be done at this
155
- // point.
156
- if response .StatusCode == 500 {
157
- return ErrUnexpectedResponse
158
- }
159
- // Status codes 200 and 201 are indicative of being able to convert the
160
- // response body to the struct that was specified.
161
- if response .StatusCode == 200 || response .StatusCode == 201 {
162
- if err := json .Unmarshal (responseBody , & v ); err != nil {
163
- return fmt .Errorf ("could not decode response JSON, %s: %v" , string (responseBody ), err )
164
- }
165
- return nil
166
- }
167
-
168
- // We're dealing with an API error here. try to decode it, but don't do
169
- // anything with the error. This is because not all values of `v` have
170
- // `Error` properties and decoding could fail.
171
- json .Unmarshal (responseBody , & v )
172
-
173
- // Anything else than a 200/201/500 should be a JSON error.
174
- return ErrResponse
175
- }
176
-
177
- func requestV2 (c * Client , v interface {}, method , path string , data interface {}) error {
178
77
if ! strings .HasPrefix (path , "https://" ) && ! strings .HasPrefix (path , "http://" ) {
179
78
path = fmt .Sprintf ("%s/%s" , Endpoint , path )
180
79
}
@@ -253,10 +152,6 @@ func requestV2(c *Client, v interface{}, method, path string, data interface{})
253
152
func (c * Client ) Balance () (* Balance , error ) {
254
153
balance := & Balance {}
255
154
if err := c .Request (balance , http .MethodGet , "balance" , nil ); err != nil {
256
- if err == ErrResponse {
257
- return balance , err
258
- }
259
-
260
155
return nil , err
261
156
}
262
157
@@ -268,10 +163,6 @@ func (c *Client) Balance() (*Balance, error) {
268
163
func (c * Client ) HLR (id string ) (* HLR , error ) {
269
164
hlr := & HLR {}
270
165
if err := c .Request (hlr , http .MethodGet , HLRPath + "/" + id , nil ); err != nil {
271
- if err == ErrResponse {
272
- return hlr , err
273
- }
274
-
275
166
return nil , err
276
167
}
277
168
@@ -283,10 +174,6 @@ func (c *Client) HLR(id string) (*HLR, error) {
283
174
func (c * Client ) HLRs () (* HLRList , error ) {
284
175
hlrList := & HLRList {}
285
176
if err := c .Request (hlrList , http .MethodGet , HLRPath , nil ); err != nil {
286
- if err == ErrResponse {
287
- return hlrList , err
288
- }
289
-
290
177
return nil , err
291
178
}
292
179
@@ -303,10 +190,6 @@ func (c *Client) NewHLR(msisdn string, reference string) (*HLR, error) {
303
190
hlr := & HLR {}
304
191
305
192
if err := c .Request (hlr , http .MethodPost , HLRPath , requestData ); err != nil {
306
- if err == ErrResponse {
307
- return hlr , err
308
- }
309
-
310
193
return nil , err
311
194
}
312
195
@@ -317,10 +200,6 @@ func (c *Client) NewHLR(msisdn string, reference string) (*HLR, error) {
317
200
func (c * Client ) Message (id string ) (* Message , error ) {
318
201
message := & Message {}
319
202
if err := c .Request (message , http .MethodGet , MessagePath + "/" + id , nil ); err != nil {
320
- if err == ErrResponse {
321
- return message , err
322
- }
323
-
324
203
return nil , err
325
204
}
326
205
@@ -336,10 +215,6 @@ func (c *Client) Messages(msgListParams *MessageListParams) (*MessageList, error
336
215
}
337
216
338
217
if err := c .Request (messageList , http .MethodGet , MessagePath + "?" + params .Encode (), nil ); err != nil {
339
- if err == ErrResponse {
340
- return messageList , err
341
- }
342
-
343
218
return nil , err
344
219
}
345
220
@@ -355,10 +230,6 @@ func (c *Client) NewMessage(originator string, recipients []string, body string,
355
230
356
231
message := & Message {}
357
232
if err := c .Request (message , http .MethodPost , MessagePath , requestData ); err != nil {
358
- if err == ErrResponse {
359
- return message , err
360
- }
361
-
362
233
return nil , err
363
234
}
364
235
@@ -369,10 +240,6 @@ func (c *Client) NewMessage(originator string, recipients []string, body string,
369
240
func (c * Client ) MMSMessage (id string ) (* MMSMessage , error ) {
370
241
mmsMessage := & MMSMessage {}
371
242
if err := c .Request (mmsMessage , http .MethodGet , MMSPath + "/" + id , nil ); err != nil {
372
- if err == ErrResponse {
373
- return mmsMessage , err
374
- }
375
-
376
243
return nil , err
377
244
}
378
245
@@ -391,10 +258,6 @@ func (c *Client) NewMMSMessage(originator string, recipients []string, msgParams
391
258
392
259
mmsMessage := & MMSMessage {}
393
260
if err := c .Request (mmsMessage , http .MethodPost , MMSPath , params ); err != nil {
394
- if err == ErrResponse {
395
- return mmsMessage , err
396
- }
397
-
398
261
return nil , err
399
262
}
400
263
@@ -405,10 +268,6 @@ func (c *Client) NewMMSMessage(originator string, recipients []string, msgParams
405
268
func (c * Client ) VoiceMessage (id string ) (* VoiceMessage , error ) {
406
269
message := & VoiceMessage {}
407
270
if err := c .Request (message , http .MethodGet , VoiceMessagePath + "/" + id , nil ); err != nil {
408
- if err == ErrResponse {
409
- return message , err
410
- }
411
-
412
271
return nil , err
413
272
}
414
273
@@ -419,10 +278,6 @@ func (c *Client) VoiceMessage(id string) (*VoiceMessage, error) {
419
278
func (c * Client ) VoiceMessages () (* VoiceMessageList , error ) {
420
279
messageList := & VoiceMessageList {}
421
280
if err := c .Request (messageList , http .MethodGet , VoiceMessagePath , nil ); err != nil {
422
- if err == ErrResponse {
423
- return messageList , err
424
- }
425
-
426
281
return nil , err
427
282
}
428
283
@@ -438,10 +293,6 @@ func (c *Client) NewVoiceMessage(recipients []string, body string, params *Voice
438
293
439
294
message := & VoiceMessage {}
440
295
if err := c .Request (message , http .MethodPost , VoiceMessagePath , requestData ); err != nil {
441
- if err == ErrResponse {
442
- return message , err
443
- }
444
-
445
296
return nil , err
446
297
}
447
298
@@ -457,10 +308,6 @@ func (c *Client) NewVerify(recipient string, params *VerifyParams) (*Verify, err
457
308
458
309
verify := & Verify {}
459
310
if err := c .Request (verify , http .MethodPost , VerifyPath , requestData ); err != nil {
460
- if err == ErrResponse {
461
- return verify , err
462
- }
463
-
464
311
return nil , err
465
312
}
466
313
@@ -476,10 +323,6 @@ func (c *Client) VerifyToken(id, token string) (*Verify, error) {
476
323
477
324
verify := & Verify {}
478
325
if err := c .Request (verify , http .MethodGet , path , nil ); err != nil {
479
- if err == ErrResponse {
480
- return verify , err
481
- }
482
-
483
326
return nil , err
484
327
}
485
328
@@ -492,10 +335,7 @@ func (c *Client) Lookup(phoneNumber string, params *LookupParams) (*Lookup, erro
492
335
path := LookupPath + "/" + phoneNumber + "?" + urlParams .Encode ()
493
336
494
337
lookup := & Lookup {}
495
- if err := c .Request (lookup , http .MethodGet , path , nil ); err != nil {
496
- if err == ErrResponse {
497
- return lookup , err
498
- }
338
+ if err := c .Request (lookup , http .MethodPost , path , nil ); err != nil {
499
339
return nil , err
500
340
}
501
341
@@ -509,10 +349,6 @@ func (c *Client) NewLookupHLR(phoneNumber string, params *LookupParams) (*HLR, e
509
349
510
350
hlr := & HLR {}
511
351
if err := c .Request (hlr , http .MethodPost , path , requestData ); err != nil {
512
- if err == ErrResponse {
513
- return hlr , err
514
- }
515
-
516
352
return nil , err
517
353
}
518
354
@@ -526,10 +362,6 @@ func (c *Client) LookupHLR(phoneNumber string, params *LookupParams) (*HLR, erro
526
362
527
363
hlr := & HLR {}
528
364
if err := c .Request (hlr , http .MethodGet , path , nil ); err != nil {
529
- if err == ErrResponse {
530
- return hlr , err
531
- }
532
-
533
365
return nil , err
534
366
}
535
367
0 commit comments