vkdart

Форк
0
/
vkontakte.dart 
83 строки · 1.8 Кб
1
import 'package:vkdart/util.dart';
2
import 'package:vkdart/vkontakte.dart';
3

4
/// Listing of languages supported by VK API.
5
enum LangApi {
6
  /// Russian.
7
  ru,
8

9
  /// Ukrainian
10
  uk,
11

12
  /// Belarusian
13
  be,
14

15
  /// English
16
  en,
17

18
  /// Finnish
19
  fi,
20

21
  /// German
22
  de,
23

24
  /// Italian
25
  it
26
}
27

28
/// The class of interaction with the VK API.
29
class Vkontakte {
30
  static const _baseUrl = 'https://api.vk.com/method/';
31

32
  final String _token;
33
  final LangApi _language;
34
  final String _version;
35

36
  /// Creating a base instance of the [Api] class.
37
  ///
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.
42
  Vkontakte({
43
    required String token,
44
    required LangApi language,
45
    required String version,
46
  })  : _token = token,
47
        _language = language,
48
        _version = version;
49

50
  /// Allows you to create requests to the VK Api.
51
  Future<Object> request(String methodName,
52
      [Map<String, dynamic> body = const {}]) async {
53
    final requestBody = {
54
      ...body,
55
      'v': _version,
56
      'lang': _language.index,
57
    };
58

59
    final headers = {'Authorization': 'Bearer $_token'};
60

61
    return HttpClient.httpPost(
62
      _baseUrl + methodName,
63
      body: requestBody,
64
      headers: headers,
65
    ).then((data) {
66
      final error = (data['error'] as Map?)?.cast<String, dynamic>();
67
      final response = data['response'] as Object?;
68

69
      if (error != null) return Future.error(ApiException(error));
70

71
      return response!;
72
    });
73
  }
74
}
75

76
// ignore: public_member_api_docs
77
class ApiException extends ApiErrorModel implements Exception {
78
  // ignore: public_member_api_docs
79
  ApiException(super.payload);
80

81
  @override
82
  String toString() => 'ApiException[$code]: $message';
83
}
84

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.