$httpPost method
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);
}