request method

Future<Map<String, Object?>> request(
  1. String method, [
  2. Map<String, Object?> params = const {}
])

Implementation

Future<Map<String, Object?>> request(
  String method, [
  Map<String, Object?> params = const {},
]) async {
  final bytes = utf8.encode(
    jsonEncode({
      'protocol': devSessionProtocolVersion,
      'method': method,
      'params': params,
    }),
  );
  if (bytes.length > _maxBytes) {
    throw const DevSessionException(
      'Development payload exceeds the size limit.',
    );
  }
  final request = await _http.postUrl(Uri.parse('http://127.0.0.1:$_port/'));
  request.headers.set(HttpHeaders.authorizationHeader, 'Bearer $_token');
  request.headers.contentType = ContentType.json;
  request.contentLength = bytes.length;
  request.add(bytes);
  final response = await request.close().timeout(const Duration(seconds: 46));
  final data = jsonDecode(await _readBounded(response)) as Map;
  if (response.statusCode != HttpStatus.ok || data['result'] is! Map) {
    throw DevSessionException(
      data['error']?.toString() ?? 'Development session unavailable.',
    );
  }
  return (data['result'] as Map).cast<String, Object?>();
}