makeBackendRequest method

Future<Response> makeBackendRequest({
  1. required String endpoint,
  2. required String method,
  3. Map<String, dynamic>? body,
  4. Map<String, String>? headers,
})

Make HTTP request to backend

Implementation

Future<http.Response> makeBackendRequest({
  required String endpoint,
  required String method,
  Map<String, dynamic>? body,
  Map<String, String>? headers,
}) async {
  final uri = Uri.parse('${config.backendUrl}$endpoint');
  final requestHeaders = {
    'Content-Type': 'application/json',
    'X-Payment-Provider': config.provider.name,
    'X-Payment-Environment': config.environment.name,
    ...?config.customHeaders,
    ...?headers,
  };

  switch (method.toUpperCase()) {
    case 'GET':
      return await http.get(uri, headers: requestHeaders);
    case 'POST':
      return await http.post(
        uri,
        headers: requestHeaders,
        body: body != null ? jsonEncode(body) : null,
      );
    case 'PUT':
      return await http.put(
        uri,
        headers: requestHeaders,
        body: body != null ? jsonEncode(body) : null,
      );
    case 'DELETE':
      return await http.delete(uri, headers: requestHeaders);
    default:
      throw ArgumentError('Unsupported HTTP method: $method');
  }
}