request method

  1. @override
Future<Map<String, dynamic>> request(
  1. String method,
  2. List params
)

Sends a single RPC request.

Implementation

@override
Future<Map<String, dynamic>> request(
    String method, List<dynamic> params) async {
  final requestId = ++_requestId;
  final body = json.encode({
    'jsonrpc': '2.0',
    'id': requestId,
    'method': method,
    'params': params,
  });

  final response = await _client
      .post(
        Uri.parse(url),
        headers: {
          'Content-Type': 'application/json',
          ...headers,
        },
        body: body,
      )
      .timeout(timeout);

  if (response.statusCode != 200) {
    throw RpcError(-32000, 'HTTP error: ${response.statusCode}');
  }

  final result = json.decode(response.body) as Map<String, dynamic>;

  if (result.containsKey('error')) {
    throw RpcError.fromJson(result['error'] as Map<String, dynamic>);
  }

  return result;
}