From f1cb7278c50f98dd172dcf9f2d63ec7a6c0f6aff Mon Sep 17 00:00:00 2001 From: julian Date: Mon, 7 Aug 2023 09:18:08 -0600 Subject: [PATCH] update network wrapper --- lib/networking/http.dart | 73 ++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/lib/networking/http.dart b/lib/networking/http.dart index ddda3e7e6..909a66d27 100644 --- a/lib/networking/http.dart +++ b/lib/networking/http.dart @@ -1,40 +1,79 @@ import 'dart:convert'; +import 'dart:io'; -import 'package:http/http.dart' as http; +import 'package:stackwallet/utilities/logger.dart'; // WIP wrapper layer abstract class HTTP { - static Future get({ + static Future get({ required Uri url, Map? headers, required bool routeOverTor, }) async { - if (routeOverTor) { - // TODO - throw UnimplementedError(); - } else { - return http.get(url, headers: headers); + final httpClient = HttpClient(); + try { + if (routeOverTor) { + // TODO + throw UnimplementedError(); + } else { + final HttpClientRequest request = await httpClient.getUrl( + url, + ); + + request.headers.clear(); + if (headers != null) { + headers.forEach((key, value) => request.headers.add); + } + + return request.close(); + } + } catch (e, s) { + Logging.instance.log( + "HTTP.get() rethrew: $e\n$s", + level: LogLevel.Info, + ); + rethrow; + } finally { + httpClient.close(force: true); } } - static Future post({ + static Future post({ required Uri url, Map? headers, Object? body, Encoding? encoding, required bool routeOverTor, }) async { - if (routeOverTor) { - // TODO - throw UnimplementedError(); - } else { - return http.post( - url, - headers: headers, - body: body, - encoding: encoding, + final httpClient = HttpClient(); + try { + if (routeOverTor) { + // TODO + throw UnimplementedError(); + } else { + final HttpClientRequest request = await httpClient.postUrl( + url, + ); + + request.headers.clear(); + + if (headers != null) { + headers.forEach((key, value) => request.headers.add); + } + + request.write(body); + + return request.close(); + } + } catch (e, s) { + Logging.instance.log( + "HTTP.post() rethrew: $e\n$s", + level: LogLevel.Info, ); + rethrow; + } finally { + httpClient.close(force: true); } } }