reportHttpRequest method

Future<void> reportHttpRequest(
  1. RequestOptions options
)

HTTP 请求

Implementation

Future<void> reportHttpRequest(RequestOptions options) async {
  try {
    bool isFormData = options.data is FormData;
    Map data = isFormData ? {} : options.data ?? {};
    if (isFormData) {
      FormData formData = options.data as FormData;
      for (MapEntry<String, String> item in formData.fields) {
        data[item.key] = item.value;
      }
      for (final (index, item) in formData.files.indexed) {
        data['${item.key}-${index + 1}'] = {
          "filename": item.value.filename,
          "contentType": item.value.contentType.toString(),
          "size": UtilFile.normalizeFileSize(item.value.length.toDouble()),
        };
      }
    }
    String time = Jiffy.now().format(pattern: 'yyyy-MM-dd HH:mm:ss');
    String method = options.method;
    String url = '${options.uri}';
    String id = options.headers['id'];
    Map<String, dynamic> queryParams = options.queryParameters;
    Map output = {
      "time": time,
      "eventName": "Request",
      "account": options.headers['account'] ?? '',
      "method": method,
      "url": url,
      "queryParams": queryParams,
      "data": data,
      "id": id,
      ..._singleLogDeviceParams,
    };
    UtilPrint.trace(
      '''
🚀 HTTP $method Request
Url: $url
Query Params: ${normalizeConsoleJson(queryParams)}
Data: ${normalizeConsoleJson(data)}
ID: $id''',
    );
    _logQueue.addToQueue(
      path: p.join(dateRootPath, 'http.txt'),
      content: normalizeFileContent(output),
      mode: FileMode.append,
    );
  } catch (e, stackTrace) {
    debugPrint('日志服务 - HTTP 请求日志: $e\n$stackTrace');
  }
}