vkdart
1// ignore_for_file: avoid_classes_with_only_static_members
2
3import 'dart:convert';
4
5import 'package:http/http.dart' as http;
6
7/// Http client.
8class HttpClient {
9static const _headers = {'Content-Type': 'application/x-www-form-urlencoded'};
10
11static Future<dynamic> _responseParsedBody(http.Response response) async {
12final jsonBody = jsonDecode(utf8.decode(response.bodyBytes));
13
14return jsonBody;
15}
16
17static Object _customValue(Object value) =>
18value is List || value is Map ? jsonEncode(value) : value;
19
20static String? _transformBody(Map<String, dynamic>? body) =>
21body?.entries.map((e) => '${e.key}=${_customValue(e.value)}').join('&');
22
23/// Create a post request.
24static Future<dynamic> httpPost(String url,
25{Map<String, dynamic>? body, Map<String, dynamic>? headers}) =>
26http
27.post(Uri.parse(url),
28body: _transformBody(body), headers: {...?headers, ..._headers})
29.then(_responseParsedBody)
30// ignore: unnecessary_lambdas
31.catchError((error) => Future.error(error));
32}
33