doRequest method

Future doRequest(
  1. String methodName,
  2. Map<String, Object?> parameters
)

Implementation

Future<dynamic> doRequest(
    String methodName, Map<String, Object?> parameters) async {
  var requestHandler = this.requestHandler;

  if (requestHandler != null) {
    var ret = requestHandler(this, methodName, parameters);
    if (ret != null) return ret;
  }

  var needsJsonRequest = false;

  parameters = parameters.map((key, value) {
    Object? val = value;

    if (value is Uint8List) {
      val = Json.toJson(value);
      needsJsonRequest = true;
    } else if (value.isPrimitiveList || value.isPrimitiveMap) {
      needsJsonRequest = true;
    } else if (!value.isPrimitiveValue) {
      val = Json.toJson(value);
      needsJsonRequest = true;
    }

    return MapEntry(key, val);
  });

  final modulePath = this.modulePath;

  var path = modulePath.isNotEmpty ? '$modulePath/$methodName' : methodName;

  HttpMethod method;
  HttpResponse response;
  if (needsJsonRequest) {
    method = HttpMethod.POST;
    response = await httpClient.post(path,
        body: parameters, contentType: MimeType.json);
  } else {
    method = HttpMethod.GET;
    response = await httpClient.get(path, parameters: parameters);
  }

  return parseResponse(
    response,
    requestMethod: method,
    requestPath: path,
    methodName: methodName,
    parameters: parameters,
  );
}