build static method

Future<BaseRequest> build({
  1. required String baseUrl,
  2. required String path,
  3. required ApiType method,
  4. required Map<String, String> headers,
  5. ApiBody? body,
  6. ApiParams? params,
  7. ApiAuthorization? authorization,
  8. ApiCookies? cookies,
})

Builds and returns the correct http.BaseRequest subtype:

Also merges headers, authorization headers, and the cookie header.

Implementation

static Future<http.BaseRequest> build({
  required String baseUrl,
  required String path,
  required ApiType method,
  required Map<String, String> headers,
  ApiBody? body,
  ApiParams? params,
  ApiAuthorization? authorization,
  ApiCookies? cookies,
}) async {
  final uri = _buildUri(baseUrl, path, params, authorization);

  final mergedHeaders = <String, String>{
    ...headers,
    ...AuthorizationBuilder.buildHeaders(authorization),
  };

  final cookieHeader = CookieManager.instance.buildCookieHeader(
    uri.host,
    cookies,
    cookies?.extraCookies,
  );
  if (cookieHeader != null) mergedHeaders['cookie'] = cookieHeader;

  if (body != null && body.type == ApiBodyType.formData) {
    return _buildMultipart(uri, method, mergedHeaders, body);
  }

  final request = http.Request(_methodString(method), uri);
  request.headers.addAll(mergedHeaders);
  _applyBody(request, body);
  return request;
}