call method

  1. @override
Future call(
  1. String method, [
  2. List? params
])
override

Implementation

@override
Future<dynamic> call(String method, [List? params]) async {
  assert(() {
    print('HTTP calling $method $params');
    return true;
  }());

  params ??= [];

  final requestPayload = {
    'jsonrpc': '2.0',
    'method': method,
    'params': params,
    'id': _currentRequestId++,
  };

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

  // if (response.headers['content-type'] != 'application/json') {
  //   throw 'Invalid content type';
  // }
  final data = json.decode(response.body) as Map<String, dynamic>;

  if (data.containsKey('error')) {
    final error = data['error'];
    throw RpcException(error['code'], error['message'], data: error['data']);
  }

  final result = data['result'];
  return result;
}