Skip to content

Commit 0bca67f

Browse files
authored
fix(openai_dart): Decode JSON responses as UTF-8 (#234)
Fixes #233 (ref tazatechnology/openapi_spec#43)
1 parent ab12b2f commit 0bca67f

File tree

2 files changed

+26
-16
lines changed

2 files changed

+26
-16
lines changed

packages/openai_dart/lib/src/generated/client.dart

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,14 @@ class OpenAIClient {
137137
return Future.value(response);
138138
}
139139

140+
// ------------------------------------------
141+
// METHOD: _jsonDecode
142+
// ------------------------------------------
143+
144+
dynamic _jsonDecode(http.Response r) {
145+
return json.decode(utf8.decode(r.bodyBytes));
146+
}
147+
140148
// ------------------------------------------
141149
// METHOD: _request
142150
// ------------------------------------------
@@ -378,7 +386,7 @@ class OpenAIClient {
378386
responseType: 'application/json',
379387
body: request,
380388
);
381-
return CreateChatCompletionResponse.fromJson(json.decode(r.body));
389+
return CreateChatCompletionResponse.fromJson(_jsonDecode(r));
382390
}
383391

384392
// ------------------------------------------
@@ -402,7 +410,7 @@ class OpenAIClient {
402410
responseType: 'application/json',
403411
body: request,
404412
);
405-
return CreateCompletionResponse.fromJson(json.decode(r.body));
413+
return CreateCompletionResponse.fromJson(_jsonDecode(r));
406414
}
407415

408416
// ------------------------------------------
@@ -426,7 +434,7 @@ class OpenAIClient {
426434
responseType: 'application/json',
427435
body: request,
428436
);
429-
return CreateEmbeddingResponse.fromJson(json.decode(r.body));
437+
return CreateEmbeddingResponse.fromJson(_jsonDecode(r));
430438
}
431439

432440
// ------------------------------------------
@@ -456,7 +464,7 @@ class OpenAIClient {
456464
'limit': limit,
457465
},
458466
);
459-
return ListPaginatedFineTuningJobsResponse.fromJson(json.decode(r.body));
467+
return ListPaginatedFineTuningJobsResponse.fromJson(_jsonDecode(r));
460468
}
461469

462470
// ------------------------------------------
@@ -480,7 +488,7 @@ class OpenAIClient {
480488
responseType: 'application/json',
481489
body: request,
482490
);
483-
return FineTuningJob.fromJson(json.decode(r.body));
491+
return FineTuningJob.fromJson(_jsonDecode(r));
484492
}
485493

486494
// ------------------------------------------
@@ -503,7 +511,7 @@ class OpenAIClient {
503511
requestType: '',
504512
responseType: 'application/json',
505513
);
506-
return FineTuningJob.fromJson(json.decode(r.body));
514+
return FineTuningJob.fromJson(_jsonDecode(r));
507515
}
508516

509517
// ------------------------------------------
@@ -536,7 +544,7 @@ class OpenAIClient {
536544
'limit': limit,
537545
},
538546
);
539-
return ListFineTuningJobEventsResponse.fromJson(json.decode(r.body));
547+
return ListFineTuningJobEventsResponse.fromJson(_jsonDecode(r));
540548
}
541549

542550
// ------------------------------------------
@@ -559,7 +567,7 @@ class OpenAIClient {
559567
requestType: '',
560568
responseType: 'application/json',
561569
);
562-
return FineTuningJob.fromJson(json.decode(r.body));
570+
return FineTuningJob.fromJson(_jsonDecode(r));
563571
}
564572

565573
// ------------------------------------------
@@ -583,7 +591,7 @@ class OpenAIClient {
583591
responseType: 'application/json',
584592
body: request,
585593
);
586-
return ImagesResponse.fromJson(json.decode(r.body));
594+
return ImagesResponse.fromJson(_jsonDecode(r));
587595
}
588596

589597
// ------------------------------------------
@@ -602,7 +610,7 @@ class OpenAIClient {
602610
requestType: '',
603611
responseType: 'application/json',
604612
);
605-
return ListModelsResponse.fromJson(json.decode(r.body));
613+
return ListModelsResponse.fromJson(_jsonDecode(r));
606614
}
607615

608616
// ------------------------------------------
@@ -625,7 +633,7 @@ class OpenAIClient {
625633
requestType: '',
626634
responseType: 'application/json',
627635
);
628-
return Model.fromJson(json.decode(r.body));
636+
return Model.fromJson(_jsonDecode(r));
629637
}
630638

631639
// ------------------------------------------
@@ -648,7 +656,7 @@ class OpenAIClient {
648656
requestType: '',
649657
responseType: 'application/json',
650658
);
651-
return DeleteModelResponse.fromJson(json.decode(r.body));
659+
return DeleteModelResponse.fromJson(_jsonDecode(r));
652660
}
653661

654662
// ------------------------------------------
@@ -672,6 +680,6 @@ class OpenAIClient {
672680
responseType: 'application/json',
673681
body: request,
674682
);
675-
return CreateModerationResponse.fromJson(json.decode(r.body));
683+
return CreateModerationResponse.fromJson(_jsonDecode(r));
676684
}
677685
}

packages/openai_dart/pubspec.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ dev_dependencies:
2626
build_runner: ^2.4.6
2727
freezed: ^2.4.5
2828
json_serializable: ^6.7.1
29-
openapi_spec: ^0.7.7
30-
# openapi_spec:
31-
# path: ../../../openapi_spec
29+
# openapi_spec: ^0.7.8
30+
openapi_spec:
31+
git:
32+
url: https://github.com/davidmigloz/openapi_spec
33+
ref: langchain
3234
test: ^1.24.3

0 commit comments

Comments
 (0)