Skip to content

Commit 6fc40b9

Browse files
authored
Merge pull request #166 from lohanidamodar/fix-exceptions-when-response-non-json
fix-exceptions-when-response-non-json
2 parents acd2eff + add045c commit 6fc40b9

File tree

13 files changed

+77
-13
lines changed

13 files changed

+77
-13
lines changed

templates/deno/src/client.ts.twig

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,20 @@ export class Client {
9393
let response = await fetch(url.toString(), options);
9494
const contentType = response.headers.get('content-type');
9595

96-
if(response.status >= 400) {
97-
let res = await response.json();
98-
throw new {{ spec.title | caseUcfirst}}Exception(res.message, res.status, res);
99-
}
100-
10196
if (contentType && contentType.includes('application/json')) {
97+
if(response.status >= 400) {
98+
let res = await response.json();
99+
throw new {{ spec.title | caseUcfirst}}Exception(res.message, res.status, res);
100+
}
101+
102102
return response.json()
103+
} else {
104+
if(response.status >= 400) {
105+
let res = await response.text();
106+
throw new {{ spec.title | caseUcfirst}}Exception(res, response.status, null);
107+
}
108+
return response;
103109
}
104-
return response;
105110
} catch(error) {
106111
throw new {{ spec.title | caseUcfirst}}Exception(error?.response?.message || error.message, error?.response?.code, error.response);
107112
}

templates/node/lib/client.js.twig

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,12 @@ class Client {
109109
return response.data;
110110
} catch(error) {
111111
if('response' in error) {
112-
if('data' in error.response) {
113-
throw new {{spec.title | caseUcfirst}}Exception(error.response.data.message, error.response.status, error.response.data);
112+
if(error.response && 'data' in error.response) {
113+
if (typeof(error.response.data) === 'string') {
114+
throw new {{spec.title | caseUcfirst}}Exception(error.response.data, error.response.status, error.response.data);
115+
} else {
116+
throw new {{spec.title | caseUcfirst}}Exception(error.response.data.message, error.response.status, error.response.data);
117+
}
114118
}else{
115119
throw new {{spec.title | caseUcfirst}}Exception(error.response.statusText, error.response.status, error.response.data);
116120
}

templates/php/src/Client.php.twig

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,11 @@ class Client
187187
curl_close($ch);
188188
189189
if($responseStatus >= 400) {
190-
throw new {{spec.title | caseUcfirst}}Exception($responseBody['message'], $responseStatus, $responseBody);
190+
if(is_array($responseBody)) {
191+
throw new {{spec.title | caseUcfirst}}Exception($responseBody['message'], $responseStatus, $responseBody);
192+
} else {
193+
throw new {{spec.title | caseUcfirst}}Exception($responseBody, $responseStatus);
194+
}
191195
}
192196
193197

templates/python/package/client.py.twig

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,12 @@ class Client:
8686

8787
return response._content
8888
except Exception as e:
89-
if response.json():
90-
raise {{spec.title | caseUcfirst}}Exception(response.json()['message'], response.status_code, response.json())
89+
if response != None:
90+
content_type = response.headers['Content-Type']
91+
if content_type.startswith('application/json'):
92+
raise {{spec.title | caseUcfirst}}Exception(response.json()['message'], response.status_code, response.json())
93+
else:
94+
raise {{spec.title | caseUcfirst}}Exception(response.text, response.status_code)
9195
else:
9296
raise {{spec.title | caseUcfirst}}Exception(e)
9397

templates/ruby/lib/container/client.rb.twig

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,12 @@ module {{spec.title | caseUcfirst}}
9393

9494
return fetch(method, uri, headers, {}, limit - 1)
9595
end
96-
97-
res = JSON.parse(response.body);
96+
97+
begin
98+
res = JSON.parse(response.body);
99+
rescue JSON::ParserError => e
100+
raise {{spec.title | caseUcfirst}}::Exception.new(response.body, response.code, nil)
101+
end
98102

99103
if(response.code.to_i >= 400)
100104
raise {{spec.title | caseUcfirst}}::Exception.new(res['message'], res['status'], res)

tests/SDKTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ public function testHTTPSuccess()
328328
if ($options['supportException']) {
329329
$this->assertEquals('Mock 400 error',$output[12] ?? '');
330330
$this->assertEquals('Server Error', $output[13] ?? '');
331+
$this->assertEquals('This is a text error', $output[14] ?? '');
331332
}
332333
}
333334
}

tests/languages/dart/tests.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ void main() async {
6666
print(e.message);
6767
}
6868

69+
try {
70+
await general.error502();
71+
} on AppwriteException catch(e) {
72+
print(e.message);
73+
}
74+
6975
// response = await general.setCookie();
7076
// print(response.data['result']);
7177

tests/languages/deno/tests.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ async function start() {
8585
}catch(error){
8686
console.log(error.message);
8787
}
88+
89+
try {
90+
response = await general.error502();
91+
}catch(error){
92+
console.log(error.message);
93+
}
8894
}
8995

9096
start()

tests/languages/flutter/tests.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ void main() async {
6969
print(e.message);
7070
}
7171

72+
try {
73+
await general.error502();
74+
} on AppwriteException catch (e) {
75+
print(e.message);
76+
}
77+
7278
// response = await general.setCookie();
7379
// print(response.data['result']);
7480

tests/languages/node/test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,18 @@ async function start() {
6161
} catch(error) {
6262
console.log(error.message);
6363
}
64+
6465
try {
6566
response = await general.error500();
6667
} catch(error) {
6768
console.log(error.message);
6869
}
70+
71+
try {
72+
response = await general.error502();
73+
} catch(error) {
74+
console.log(error.message);
75+
}
6976

7077
}
7178

0 commit comments

Comments
 (0)