Commit 796dae1
[Fix] Handle non-JSON errors (#1031)
## Changes
Some errors returned by the platform are not serialized using JSON (see
#998 for an
example). They are instead serialized in the form "<ERROR_CODE>:
<MESSAGE>". Today, the SDK cannot parse these error messages well,
resulting in a poor user experience.
This PR adds support for parsing these error messages from the platform
to the SDK. This should reduce bug reports for the SDK with respect to
unexpected response parsing. This PR also refactors the error
deserialization logic somewhat to make it more extensible in the future
for other potential error formats that are not currently handled.
## Breaking Changes
This PR renames MakeUnexpectedError() to MakeUnexpectedResponse() in the
`apierr` package. It also changes the return type to string. This makes
the message easier to incorporate into error responses that only depend
on the string representation of the error, as well as allows us to start
the message with a capital letter, as it is a complete sentence.
The error message for failed deserialization of valid responses has
changed slightly, from `unexpected error handling request` to `failed to
unmarshal response body`. The rest of the message is identical.
## Tests
Refactored unit tests to a table-driven test case, and added four new
cases: one for error details (not previously covered), one for the
regular happy path, one for unexpected responses, and one for the new
error message format.
- [ ] `make test` passing
- [ ] `make fmt` applied
- [ ] relevant integration tests applied
---------
Co-authored-by: Renaud Hartert <[email protected]>1 parent a24a158 commit 796dae1
File tree
4 files changed
+205
-80
lines changed- apierr
- client
- httpclient
4 files changed
+205
-80
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
146 | | - | |
| 146 | + | |
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
| |||
155 | 155 | | |
156 | 156 | | |
157 | 157 | | |
158 | | - | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
159 | 174 | | |
160 | 175 | | |
161 | 176 | | |
162 | 177 | | |
163 | 178 | | |
164 | 179 | | |
165 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
166 | 195 | | |
167 | 196 | | |
168 | 197 | | |
| |||
177 | 206 | | |
178 | 207 | | |
179 | 208 | | |
180 | | - | |
| 209 | + | |
| 210 | + | |
181 | 211 | | |
182 | 212 | | |
183 | 213 | | |
| |||
206 | 236 | | |
207 | 237 | | |
208 | 238 | | |
209 | | - | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
210 | 270 | | |
211 | 271 | | |
| 272 | + | |
212 | 273 | | |
213 | 274 | | |
214 | 275 | | |
| |||
220 | 281 | | |
221 | 282 | | |
222 | 283 | | |
223 | | - | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | | - | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
229 | 298 | | |
230 | | - | |
| 299 | + | |
231 | 300 | | |
232 | 301 | | |
233 | 302 | | |
234 | 303 | | |
235 | 304 | | |
236 | | - | |
| 305 | + | |
237 | 306 | | |
238 | 307 | | |
239 | 308 | | |
240 | 309 | | |
241 | 310 | | |
242 | 311 | | |
243 | 312 | | |
244 | | - | |
245 | 313 | | |
246 | 314 | | |
247 | 315 | | |
248 | 316 | | |
249 | 317 | | |
250 | 318 | | |
251 | | - | |
| 319 | + | |
252 | 320 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
28 | 19 | | |
29 | 20 | | |
30 | | - | |
31 | | - | |
32 | | - | |
| 21 | + | |
33 | 22 | | |
34 | 23 | | |
35 | | - | |
36 | | - | |
| 24 | + | |
| 25 | + | |
37 | 26 | | |
38 | | - | |
| 27 | + | |
| 28 | + | |
39 | 29 | | |
40 | 30 | | |
41 | 31 | | |
42 | | - | |
| 32 | + | |
43 | 33 | | |
44 | 34 | | |
45 | 35 | | |
46 | 36 | | |
47 | | - | |
| 37 | + | |
48 | 38 | | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | 39 | | |
54 | 40 | | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
63 | 80 | | |
64 | 81 | | |
65 | 82 | | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
84 | 128 | | |
| 129 | + | |
| 130 | + | |
85 | 131 | | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
86 | 143 | | |
87 | 144 | | |
88 | 145 | | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
98 | 157 | | |
99 | | - | |
100 | | - | |
101 | 158 | | |
0 commit comments