1
- package basket
1
+ package todo
2
2
3
3
import (
4
4
"bytes"
5
5
"context"
6
6
"encoding/json"
7
7
"errors"
8
8
"net/http"
9
+ "net/url"
9
10
"regexp"
11
+ "strings"
10
12
)
11
13
12
- type basketServiceClient struct {
14
+ type todoServiceClient struct {
13
15
baseURL string
14
16
hooks HooksClient
15
17
ctx context.Context
16
18
httpClient * httpClientWrapper
17
19
xmlMatcher * regexp.Regexp
18
20
}
19
21
20
- func (client * basketServiceClient ) PostItem (request * PostItemRequest ) (PostItemResponse , error ) {
22
+ func (client * todoServiceClient ) DeleteTodos (request * DeleteTodosRequest ) (DeleteTodosResponse , error ) {
21
23
if request == nil {
22
24
return nil , newRequestObjectIsNilError
23
25
}
24
- path := "/item"
26
+ path := "/todos"
27
+ method := "DELETE"
28
+ endpoint := client .baseURL + path
29
+ httpContext := newHttpContextWrapper (client .ctx )
30
+ httpRequest , reqErr := http .NewRequest (method , endpoint , nil )
31
+ if reqErr != nil {
32
+ return nil , reqErr
33
+ }
34
+ // set all headers from client context
35
+ err := setRequestHeadersFromContext (httpContext , httpRequest .Header )
36
+ if err != nil {
37
+ return nil , err
38
+ }
39
+ if len (httpRequest .Header ["accept" ]) == 0 && len (httpRequest .Header ["Accept" ]) == 0 {
40
+ httpRequest .Header ["Accept" ] = []string {"application/json" }
41
+ }
42
+ httpResponse , err := client .httpClient .Do (httpRequest )
43
+ if err != nil {
44
+ return nil , err
45
+ }
46
+ if httpResponse .StatusCode == 204 {
47
+ contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
48
+ if contentTypeOfResponse == "" {
49
+ httpResponse .Body .Close ()
50
+ response := new (DeleteTodos204Response )
51
+ return response , nil
52
+ }
53
+ httpResponse .Body .Close ()
54
+ return nil , newNotSupportedContentType (415 , contentTypeOfResponse )
55
+ }
56
+
57
+ if client .hooks .OnUnknownResponseCode != nil {
58
+ message := client .hooks .OnUnknownResponseCode (httpResponse , httpRequest )
59
+ httpResponse .Body .Close ()
60
+ return nil , errors .New (message )
61
+ }
62
+ httpResponse .Body .Close ()
63
+ return nil , newUnknownResponseError (httpResponse .StatusCode )
64
+ }
65
+
66
+ func (client * todoServiceClient ) ListTodos (request * ListTodosRequest ) (ListTodosResponse , error ) {
67
+ if request == nil {
68
+ return nil , newRequestObjectIsNilError
69
+ }
70
+ path := "/todos"
71
+ method := "GET"
72
+ endpoint := client .baseURL + path
73
+ httpContext := newHttpContextWrapper (client .ctx )
74
+ httpRequest , reqErr := http .NewRequest (method , endpoint , nil )
75
+ if reqErr != nil {
76
+ return nil , reqErr
77
+ }
78
+ // set all headers from client context
79
+ err := setRequestHeadersFromContext (httpContext , httpRequest .Header )
80
+ if err != nil {
81
+ return nil , err
82
+ }
83
+ if len (httpRequest .Header ["accept" ]) == 0 && len (httpRequest .Header ["Accept" ]) == 0 {
84
+ httpRequest .Header ["Accept" ] = []string {"application/json" }
85
+ }
86
+ httpResponse , err := client .httpClient .Do (httpRequest )
87
+ if err != nil {
88
+ return nil , err
89
+ }
90
+ if httpResponse .StatusCode == 200 {
91
+ contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
92
+ if contentTypeOfResponse == contentTypeApplicationJson || contentTypeOfResponse == contentTypeApplicationHalJson {
93
+ response := new (ListTodos200Response )
94
+ decodeErr := json .NewDecoder (httpResponse .Body ).Decode (& response .Body )
95
+ httpResponse .Body .Close ()
96
+ if decodeErr != nil {
97
+ return nil , decodeErr
98
+ }
99
+ return response , nil
100
+ } else if contentTypeOfResponse == "" {
101
+ httpResponse .Body .Close ()
102
+ response := new (ListTodos200Response )
103
+ return response , nil
104
+ }
105
+ httpResponse .Body .Close ()
106
+ return nil , newNotSupportedContentType (415 , contentTypeOfResponse )
107
+ }
108
+
109
+ if client .hooks .OnUnknownResponseCode != nil {
110
+ message := client .hooks .OnUnknownResponseCode (httpResponse , httpRequest )
111
+ httpResponse .Body .Close ()
112
+ return nil , errors .New (message )
113
+ }
114
+ httpResponse .Body .Close ()
115
+ return nil , newUnknownResponseError (httpResponse .StatusCode )
116
+ }
117
+
118
+ func (client * todoServiceClient ) PostTodo (request * PostTodoRequest ) (PostTodoResponse , error ) {
119
+ if request == nil {
120
+ return nil , newRequestObjectIsNilError
121
+ }
122
+ path := "/todos"
25
123
method := "POST"
26
124
endpoint := client .baseURL + path
27
125
httpContext := newHttpContextWrapper (client .ctx )
28
126
jsonData := new (bytes.Buffer )
29
- encodeErr := json .NewEncoder (jsonData ).Encode (& request .Item )
127
+ encodeErr := json .NewEncoder (jsonData ).Encode (& request .TodoPost )
30
128
if encodeErr != nil {
31
129
return nil , encodeErr
32
130
}
@@ -47,22 +145,75 @@ func (client *basketServiceClient) PostItem(request *PostItemRequest) (PostItemR
47
145
if err != nil {
48
146
return nil , err
49
147
}
50
- if httpResponse .StatusCode == 200 {
148
+ if httpResponse .StatusCode == 201 {
149
+ contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
150
+ if contentTypeOfResponse == contentTypeApplicationJson || contentTypeOfResponse == contentTypeApplicationHalJson {
151
+ response := new (PostTodo201Response )
152
+ decodeErr := json .NewDecoder (httpResponse .Body ).Decode (& response .Body )
153
+ httpResponse .Body .Close ()
154
+ if decodeErr != nil {
155
+ return nil , decodeErr
156
+ }
157
+ return response , nil
158
+ } else if contentTypeOfResponse == "" {
159
+ httpResponse .Body .Close ()
160
+ response := new (PostTodo201Response )
161
+ return response , nil
162
+ }
163
+ httpResponse .Body .Close ()
164
+ return nil , newNotSupportedContentType (415 , contentTypeOfResponse )
165
+ }
166
+
167
+ if client .hooks .OnUnknownResponseCode != nil {
168
+ message := client .hooks .OnUnknownResponseCode (httpResponse , httpRequest )
169
+ httpResponse .Body .Close ()
170
+ return nil , errors .New (message )
171
+ }
172
+ httpResponse .Body .Close ()
173
+ return nil , newUnknownResponseError (httpResponse .StatusCode )
174
+ }
175
+
176
+ func (client * todoServiceClient ) DeleteTodo (request * DeleteTodoRequest ) (DeleteTodoResponse , error ) {
177
+ if request == nil {
178
+ return nil , newRequestObjectIsNilError
179
+ }
180
+ path := "/todos/{todoId}"
181
+ method := "DELETE"
182
+ endpoint := client .baseURL + path
183
+ httpContext := newHttpContextWrapper (client .ctx )
184
+ endpoint = strings .Replace (endpoint , "{todoId}" , url .QueryEscape (toString (request .TodoId )), 1 )
185
+ httpRequest , reqErr := http .NewRequest (method , endpoint , nil )
186
+ if reqErr != nil {
187
+ return nil , reqErr
188
+ }
189
+ // set all headers from client context
190
+ err := setRequestHeadersFromContext (httpContext , httpRequest .Header )
191
+ if err != nil {
192
+ return nil , err
193
+ }
194
+ if len (httpRequest .Header ["accept" ]) == 0 && len (httpRequest .Header ["Accept" ]) == 0 {
195
+ httpRequest .Header ["Accept" ] = []string {"application/json" }
196
+ }
197
+ httpResponse , err := client .httpClient .Do (httpRequest )
198
+ if err != nil {
199
+ return nil , err
200
+ }
201
+ if httpResponse .StatusCode == 204 {
51
202
contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
52
203
if contentTypeOfResponse == "" {
53
204
httpResponse .Body .Close ()
54
- response := new (PostItem200Response )
205
+ response := new (DeleteTodo204Response )
55
206
return response , nil
56
207
}
57
208
httpResponse .Body .Close ()
58
209
return nil , newNotSupportedContentType (415 , contentTypeOfResponse )
59
210
}
60
211
61
- if httpResponse .StatusCode == 500 {
212
+ if httpResponse .StatusCode == 404 {
62
213
contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
63
214
if contentTypeOfResponse == "" {
64
215
httpResponse .Body .Close ()
65
- response := new (PostItem500Response )
216
+ response := new (DeleteTodo404Response )
66
217
return response , nil
67
218
}
68
219
httpResponse .Body .Close ()
@@ -78,14 +229,15 @@ func (client *basketServiceClient) PostItem(request *PostItemRequest) (PostItemR
78
229
return nil , newUnknownResponseError (httpResponse .StatusCode )
79
230
}
80
231
81
- func (client * basketServiceClient ) GetItems (request * GetItemsRequest ) (GetItemsResponse , error ) {
232
+ func (client * todoServiceClient ) GetTodo (request * GetTodoRequest ) (GetTodoResponse , error ) {
82
233
if request == nil {
83
234
return nil , newRequestObjectIsNilError
84
235
}
85
- path := "/items "
236
+ path := "/todos/{todoId} "
86
237
method := "GET"
87
238
endpoint := client .baseURL + path
88
239
httpContext := newHttpContextWrapper (client .ctx )
240
+ endpoint = strings .Replace (endpoint , "{todoId}" , url .QueryEscape (toString (request .TodoId )), 1 )
89
241
httpRequest , reqErr := http .NewRequest (method , endpoint , nil )
90
242
if reqErr != nil {
91
243
return nil , reqErr
@@ -105,7 +257,77 @@ func (client *basketServiceClient) GetItems(request *GetItemsRequest) (GetItemsR
105
257
if httpResponse .StatusCode == 200 {
106
258
contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
107
259
if contentTypeOfResponse == contentTypeApplicationJson || contentTypeOfResponse == contentTypeApplicationHalJson {
108
- response := new (GetItems200Response )
260
+ response := new (GetTodo200Response )
261
+ decodeErr := json .NewDecoder (httpResponse .Body ).Decode (& response .Body )
262
+ httpResponse .Body .Close ()
263
+ if decodeErr != nil {
264
+ return nil , decodeErr
265
+ }
266
+ return response , nil
267
+ } else if contentTypeOfResponse == "" {
268
+ httpResponse .Body .Close ()
269
+ response := new (GetTodo200Response )
270
+ return response , nil
271
+ }
272
+ httpResponse .Body .Close ()
273
+ return nil , newNotSupportedContentType (415 , contentTypeOfResponse )
274
+ }
275
+
276
+ if httpResponse .StatusCode == 404 {
277
+ contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
278
+ if contentTypeOfResponse == "" {
279
+ httpResponse .Body .Close ()
280
+ response := new (GetTodo404Response )
281
+ return response , nil
282
+ }
283
+ httpResponse .Body .Close ()
284
+ return nil , newNotSupportedContentType (415 , contentTypeOfResponse )
285
+ }
286
+
287
+ if client .hooks .OnUnknownResponseCode != nil {
288
+ message := client .hooks .OnUnknownResponseCode (httpResponse , httpRequest )
289
+ httpResponse .Body .Close ()
290
+ return nil , errors .New (message )
291
+ }
292
+ httpResponse .Body .Close ()
293
+ return nil , newUnknownResponseError (httpResponse .StatusCode )
294
+ }
295
+
296
+ func (client * todoServiceClient ) PatchTodo (request * PatchTodoRequest ) (PatchTodoResponse , error ) {
297
+ if request == nil {
298
+ return nil , newRequestObjectIsNilError
299
+ }
300
+ path := "/todos/{todoId}"
301
+ method := "PATCH"
302
+ endpoint := client .baseURL + path
303
+ httpContext := newHttpContextWrapper (client .ctx )
304
+ endpoint = strings .Replace (endpoint , "{todoId}" , url .QueryEscape (toString (request .TodoId )), 1 )
305
+ jsonData := new (bytes.Buffer )
306
+ encodeErr := json .NewEncoder (jsonData ).Encode (& request .TodoPatch )
307
+ if encodeErr != nil {
308
+ return nil , encodeErr
309
+ }
310
+ httpRequest , reqErr := http .NewRequest (method , endpoint , jsonData )
311
+ if reqErr != nil {
312
+ return nil , reqErr
313
+ }
314
+ httpRequest .Header [contentTypeHeader ] = []string {contentTypeApplicationJson }
315
+ // set all headers from client context
316
+ err := setRequestHeadersFromContext (httpContext , httpRequest .Header )
317
+ if err != nil {
318
+ return nil , err
319
+ }
320
+ if len (httpRequest .Header ["accept" ]) == 0 && len (httpRequest .Header ["Accept" ]) == 0 {
321
+ httpRequest .Header ["Accept" ] = []string {"application/json" }
322
+ }
323
+ httpResponse , err := client .httpClient .Do (httpRequest )
324
+ if err != nil {
325
+ return nil , err
326
+ }
327
+ if httpResponse .StatusCode == 200 {
328
+ contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
329
+ if contentTypeOfResponse == contentTypeApplicationJson || contentTypeOfResponse == contentTypeApplicationHalJson {
330
+ response := new (PatchTodo200Response )
109
331
decodeErr := json .NewDecoder (httpResponse .Body ).Decode (& response .Body )
110
332
httpResponse .Body .Close ()
111
333
if decodeErr != nil {
@@ -114,7 +336,18 @@ func (client *basketServiceClient) GetItems(request *GetItemsRequest) (GetItemsR
114
336
return response , nil
115
337
} else if contentTypeOfResponse == "" {
116
338
httpResponse .Body .Close ()
117
- response := new (GetItems200Response )
339
+ response := new (PatchTodo200Response )
340
+ return response , nil
341
+ }
342
+ httpResponse .Body .Close ()
343
+ return nil , newNotSupportedContentType (415 , contentTypeOfResponse )
344
+ }
345
+
346
+ if httpResponse .StatusCode == 404 {
347
+ contentTypeOfResponse := extractContentType (httpResponse .Header .Get (contentTypeHeader ))
348
+ if contentTypeOfResponse == "" {
349
+ httpResponse .Body .Close ()
350
+ response := new (PatchTodo404Response )
118
351
return response , nil
119
352
}
120
353
httpResponse .Body .Close ()
@@ -130,11 +363,15 @@ func (client *basketServiceClient) GetItems(request *GetItemsRequest) (GetItemsR
130
363
return nil , newUnknownResponseError (httpResponse .StatusCode )
131
364
}
132
365
133
- type BasketServiceClient interface {
134
- PostItem (request * PostItemRequest ) (PostItemResponse , error )
135
- GetItems (request * GetItemsRequest ) (GetItemsResponse , error )
366
+ type TodoServiceClient interface {
367
+ DeleteTodos (request * DeleteTodosRequest ) (DeleteTodosResponse , error )
368
+ ListTodos (request * ListTodosRequest ) (ListTodosResponse , error )
369
+ PostTodo (request * PostTodoRequest ) (PostTodoResponse , error )
370
+ DeleteTodo (request * DeleteTodoRequest ) (DeleteTodoResponse , error )
371
+ GetTodo (request * GetTodoRequest ) (GetTodoResponse , error )
372
+ PatchTodo (request * PatchTodoRequest ) (PatchTodoResponse , error )
136
373
}
137
374
138
- func NewBasketServiceClient (httpClient * http.Client , baseUrl string , options Opts ) BasketServiceClient {
139
- return & basketServiceClient {httpClient : newHttpClientWrapper (httpClient , baseUrl ), baseURL : baseUrl , hooks : options .Hooks , ctx : options .Ctx , xmlMatcher : regexp .MustCompile ("^application\\ /(.+)xml$" )}
375
+ func NewTodoServiceClient (httpClient * http.Client , baseUrl string , options Opts ) TodoServiceClient {
376
+ return & todoServiceClient {httpClient : newHttpClientWrapper (httpClient , baseUrl ), baseURL : baseUrl , hooks : options .Hooks , ctx : options .Ctx , xmlMatcher : regexp .MustCompile ("^application\\ /(.+)xml$" )}
140
377
}
0 commit comments