httpPut function

Future<Response> httpPut(
  1. Uri uri, {
  2. Map<String, String>? headers,
  3. Object? body,
  4. bool enableDio = false,
})

The default http PUT that support Logging

Implementation

Future<http.Response> httpPut(Uri uri,
    {Map<String, String>? headers,
    Object? body,
    bool enableDio = false}) async {
  final startTime = DateTime.now();
  initProxyClient(MultiSite.mainSiteUrl ?? uri);
  var url = HttpClientSetting.settingProxy(uri);

  if (enableDio) {
    try {
      final res = await Dio().put(url.toString(),
          options: Options(headers: headers, responseType: ResponseType.plain),
          data: body);
      printLog('🔼 PUT:$url', startTime);
      final response = http.Response(res.toString(), res.statusCode!);
      return response;
    } on DioException catch (e) {
      if (e.response != null) {
        final response =
            http.Response(e.response.toString(), e.response!.statusCode!);
        return response;
      } else {
        // ignore: only_throw_errors
        throw e.message ?? 'error';
      }
    }
  } else {
    var response =
        await _makeRequest(http.put(url, headers: headers, body: body));
    printLog('🔼 PUT:$url', startTime);

    return response;
  }
}