Support Retry-After.
GitOrigin-RevId: ca7cf22cf166aa75bb9266faa3b5d04df3c2ec5b
This commit is contained in:
parent
0c785aa361
commit
05d17c3396
@ -6,6 +6,8 @@
|
|||||||
//
|
//
|
||||||
#include "td/net/HttpQuery.h"
|
#include "td/net/HttpQuery.h"
|
||||||
|
|
||||||
|
#include "td/utils/misc.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
@ -30,6 +32,19 @@ std::vector<std::pair<string, string>> HttpQuery::string_args() const {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int HttpQuery::get_retry_after() const {
|
||||||
|
auto value = header("retry-after");
|
||||||
|
if (value.empty()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
auto r_retry_after = to_integer_safe<int>(value);
|
||||||
|
if (r_retry_after.is_error()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return td::max(0, r_retry_after.ok());
|
||||||
|
}
|
||||||
|
|
||||||
StringBuilder &operator<<(StringBuilder &sb, const HttpQuery &q) {
|
StringBuilder &operator<<(StringBuilder &sb, const HttpQuery &q) {
|
||||||
switch (q.type_) {
|
switch (q.type_) {
|
||||||
case HttpQuery::Type::EMPTY:
|
case HttpQuery::Type::EMPTY:
|
||||||
|
@ -38,6 +38,8 @@ class HttpQuery {
|
|||||||
MutableSlice arg(Slice key) const;
|
MutableSlice arg(Slice key) const;
|
||||||
|
|
||||||
std::vector<std::pair<string, string>> string_args() const;
|
std::vector<std::pair<string, string>> string_args() const;
|
||||||
|
|
||||||
|
int get_retry_after() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
using HttpQueryPtr = std::unique_ptr<HttpQuery>;
|
using HttpQueryPtr = std::unique_ptr<HttpQuery>;
|
||||||
|
Reference in New Issue
Block a user