1
import 'package:vkdart/util.dart';
2
import 'package:vkdart/vkontakte.dart';
4
/// Listing of languages supported by VK API.
28
/// The class of interaction with the VK API.
30
static const _baseUrl = 'https://api.vk.com/method/';
33
final LangApi _language;
34
final String _version;
36
/// Creating a base instance of the [Api] class.
38
/// [token] - access key.
39
/// [language] - defines the language in which various data will be returned,
40
/// such as the names of countries and cities.
41
/// [version] - API version used.
43
required String token,
44
required LangApi language,
45
required String version,
50
/// Allows you to create requests to the VK Api.
51
Future<Object> request(String methodName,
52
[Map<String, dynamic> body = const {}]) async {
56
'lang': _language.index,
59
final headers = {'Authorization': 'Bearer $_token'};
61
return HttpClient.httpPost(
62
_baseUrl + methodName,
66
final error = (data['error'] as Map?)?.cast<String, dynamic>();
67
final response = data['response'] as Object?;
69
if (error != null) return Future.error(ApiException(error));
76
// ignore: public_member_api_docs
77
class ApiException extends ApiErrorModel implements Exception {
78
// ignore: public_member_api_docs
79
ApiException(super.payload);
82
String toString() => 'ApiException[$code]: $message';