convertPostRequestToDataModel<T extends Object> function

T convertPostRequestToDataModel<T extends Object>({
  1. required PostRequest postRequest,
  2. required T fromJson(
    1. Map<String, dynamic> json
    ),
})

Implementation

T convertPostRequestToDataModel<T extends Object>({
  required PostRequest postRequest,
  required T Function(Map<String, dynamic> json) fromJson,
}) {
  final queryParameters = postRequest.queryParameters;
  if (queryParameters == null || queryParameters.isEmpty) {
    return fromJson.slashPermissive({
      'path': postRequest.path,
      if (postRequest.body != null) 'body': postRequest.body,
    });
  }
  final paramValues = queryParameters.values;
  for (final paramValues in paramValues.possibleParamValues()) {
    try {
      return fromJson.slashPermissive({
        'path': postRequest.path,
        if (postRequest.body != null) 'body': postRequest.body,
        ...Map.fromEntries(
          queryParameters.entries.mapIndexed(
            (i, e) => MapEntry(e.key, jsonDecode(paramValues[i])),
          ),
        ),
      });
    } catch (e) {
      // try next set of param values
    }
  }
  throw FormatException();
}