$httpPost method

Future<Map<String, dynamic>> $httpPost(
  1. String url,
  2. Map body, {
  3. Map<String, dynamic>? query,
})

Implementation

Future<Map<String, dynamic>> $httpPost(
  String url,
  Map body, {
  Map<String, dynamic /*String|Iterable<String>*/ >? query,
}) async {
  final now = clock.now();
  if (_queuePost.isNotEmpty) {
    if (now.difference(_queuePost.last) < const Duration(milliseconds: 500)) {
      log('Осторожно! Слишком частые запросы...', level: Level.SEVERE.value);
    } else if (now.difference(_queuePost.last) <
        const Duration(milliseconds: 1000)) {
      log('Осторожно! Очень частые запросы...', level: Level.WARNING.value);
    } else if (now.difference(_queuePost.last) <
        const Duration(milliseconds: 1500)) {
      log('Осторожно! Частые запросы...', level: Level.INFO.value);
    }
  }
  _queuePost.add(now);
  while (_queuePost.length > 5) {
    _queuePost.removeFirst();
  }
  if (url.startsWith('/')) url = url.substring(1);
  var uri = $hostUri.resolve(url);
  if (query != null) {
    uri = uri.replace(queryParameters: query);
  }
  final response = await _httpClient.post(
    uri,
    body: jsonEncode(body),
    headers: {'content-type': 'application/json; charset=utf-8'},
  );
  return _getBodyJson(response);
}