@@ -49,14 +49,16 @@ class ApiConnection {
4949
5050 bool _isOpen = true ;
5151
52- Future <String > send (http.BaseRequest request) async {
52+ Future <Map < String , dynamic > > send (http.BaseRequest request) async {
5353 assert (_isOpen);
5454 addAuth (request);
5555 final response = await _client.send (request);
5656 if (response.statusCode != 200 ) {
5757 throw Exception ("error on ${request .method } ${request .url .path }: status ${response .statusCode }" );
5858 }
59- return utf8.decode (await response.stream.toBytes ());
59+ final bytes = await response.stream.toBytes ();
60+ return jsonDecode (utf8.decode (bytes));
61+ // TODO(#37): inspect response to throw structured errors
6062 }
6163
6264 void close () {
@@ -65,15 +67,15 @@ class ApiConnection {
6567 _isOpen = false ;
6668 }
6769
68- Future <String > get (String route, Map <String , dynamic >? params) async {
70+ Future <Map < String , dynamic > > get (String route, Map <String , dynamic >? params) async {
6971 final url = realmUrl.replace (
7072 path: "/api/v1/$route " , queryParameters: encodeParameters (params));
7173 assert (debugLog ("GET $url " ));
7274 final request = http.Request ('GET' , url);
7375 return send (request);
7476 }
7577
76- Future <String > post (String route, Map <String , dynamic >? params) async {
78+ Future <Map < String , dynamic > > post (String route, Map <String , dynamic >? params) async {
7779 final url = realmUrl.replace (path: "/api/v1/$route " );
7880 final request = http.Request ('POST' , url);
7981 if (params != null ) {
@@ -82,7 +84,7 @@ class ApiConnection {
8284 return send (request);
8385 }
8486
85- Future <String > postFileFromStream (String route, Stream <List <int >> content, int length, { String ? filename }) async {
87+ Future <Map < String , dynamic > > postFileFromStream (String route, Stream <List <int >> content, int length, { String ? filename }) async {
8688 http.MultipartRequest request = http.MultipartRequest ('POST' , Uri .parse ("$realmUrl /api/v1/$route " ))
8789 ..files.add (http.MultipartFile ('file' , content, length, filename: filename));
8890 return send (request);
0 commit comments