APIRequest.fromArgs constructor

APIRequest.fromArgs(
  1. List<String> args
)

Constructs an APIRequest parsing args.

Implementation

factory APIRequest.fromArgs(List<String> args) {
  var path = args.removeAt(0);

  var arguments = Arguments.parse(
    args,
    abbreviations: {
      'm': 'method',
      'q': 'query',
      'querystring': 'query',
      'body': 'payload',
    },
  );

  var query = arguments.parameters.remove('query');

  if (query != null) {
    var params = Uri.splitQueryString(query);
    arguments.parameters.addAll(params);
  }

  var methodVal = arguments.parameters.remove('method');
  var method = methodVal != null
      ? parseAPIRequestMethod(methodVal.toString().toLowerCase()) ??
          APIRequestMethod.GET
      : APIRequestMethod.GET;

  var payload = arguments.parameters.remove('payload');

  var parameters = Map.fromEntries(arguments.parameters.entries
      .where((e) => !_regexpHeaderPrefix.hasMatch(e.key)));

  for (var f in arguments.flags) {
    parameters[f] = true;
  }

  var headers = Map.fromEntries(arguments.parameters.entries
      .where((e) => _regexpHeaderPrefix.hasMatch(e.key))
      .map((e) => MapEntry(e.key.substring(7), e.value)));

  return APIRequest(method, path,
      parameters: parameters, headers: headers, payload: payload);
}