request method

Future<Json> request(
  1. String method,
  2. Map<String, dynamic> data
)

Make request to the VK API

Implementation

Future<Json> request(
  String method,
  Map<String, dynamic> data,
) async {
  var requests_params = defaultOptions;
  requests_params.addAll(data);

  if (requests_params['random_id'] == null) {
    requests_params['random_id'] = Random().nextInt(4294967296);
  }

  for (var item in requests_params.entries) {
    if (item.value is List) {
      requests_params[item.key] = item.value.join(',');
    } else {
      requests_params[item.key] = item.value.toString();
    }
  }
  var url = Uri.parse(_baseUrl + '/$method');
  var response = await http.post(
    url,
    body: requests_params,
  );

  if (response.statusCode != 200) {
    throw CoreException('Request is broken - ${response.statusCode}');
  }

  final decoded_response = json.decode(response.body);
  if (decoded_response['error'] != null) {
    Map error = decoded_response['error'];
    throw VKException(error.cast<String, dynamic>());
  }

  return decoded_response;
}