Support POST requests in Wget.
GitOrigin-RevId: d3f50200c22dcc6c5142581d74de3a41fca00305
This commit is contained in:
parent
818279238c
commit
9d441470c8
@ -23,14 +23,17 @@
|
|||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
Wget::Wget(Promise<unique_ptr<HttpQuery>> promise, string url, std::vector<std::pair<string, string>> headers,
|
Wget::Wget(Promise<unique_ptr<HttpQuery>> promise, string url, std::vector<std::pair<string, string>> headers,
|
||||||
int32 timeout_in, int32 ttl, bool prefer_ipv6, SslStream::VerifyPeer verify_peer)
|
int32 timeout_in, int32 ttl, bool prefer_ipv6, SslStream::VerifyPeer verify_peer, string content,
|
||||||
|
string content_type)
|
||||||
: promise_(std::move(promise))
|
: promise_(std::move(promise))
|
||||||
, input_url_(std::move(url))
|
, input_url_(std::move(url))
|
||||||
, headers_(std::move(headers))
|
, headers_(std::move(headers))
|
||||||
, timeout_in_(timeout_in)
|
, timeout_in_(timeout_in)
|
||||||
, ttl_(ttl)
|
, ttl_(ttl)
|
||||||
, prefer_ipv6_(prefer_ipv6)
|
, prefer_ipv6_(prefer_ipv6)
|
||||||
, verify_peer_(verify_peer) {
|
, verify_peer_(verify_peer)
|
||||||
|
, content_(std::move(content))
|
||||||
|
, content_type_(std::move(content_type)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Status Wget::try_init() {
|
Status Wget::try_init() {
|
||||||
@ -39,7 +42,15 @@ Status Wget::try_init() {
|
|||||||
url.host_ = std::move(ascii_host);
|
url.host_ = std::move(ascii_host);
|
||||||
|
|
||||||
HttpHeaderCreator hc;
|
HttpHeaderCreator hc;
|
||||||
hc.init_get(url.query_);
|
if (content_.empty()) {
|
||||||
|
hc.init_get(url.query_);
|
||||||
|
} else {
|
||||||
|
hc.init_post(url.query_);
|
||||||
|
hc.set_content_size(content_.size());
|
||||||
|
if (!content_type_.empty()) {
|
||||||
|
hc.set_content_type(content_type_);
|
||||||
|
}
|
||||||
|
}
|
||||||
bool was_host = false;
|
bool was_host = false;
|
||||||
bool was_accept_encoding = false;
|
bool was_accept_encoding = false;
|
||||||
for (auto &header : headers_) {
|
for (auto &header : headers_) {
|
||||||
@ -58,7 +69,7 @@ Status Wget::try_init() {
|
|||||||
if (!was_accept_encoding) {
|
if (!was_accept_encoding) {
|
||||||
hc.add_header("Accept-Encoding", "gzip, deflate");
|
hc.add_header("Accept-Encoding", "gzip, deflate");
|
||||||
}
|
}
|
||||||
TRY_RESULT(header, hc.finish());
|
TRY_RESULT(header, hc.finish(content_));
|
||||||
|
|
||||||
IPAddress addr;
|
IPAddress addr;
|
||||||
TRY_STATUS(addr.init_host_port(url.host_, url.port_, prefer_ipv6_));
|
TRY_STATUS(addr.init_host_port(url.host_, url.port_, prefer_ipv6_));
|
||||||
|
@ -24,7 +24,8 @@ class Wget : public HttpOutboundConnection::Callback {
|
|||||||
public:
|
public:
|
||||||
explicit Wget(Promise<unique_ptr<HttpQuery>> promise, string url, std::vector<std::pair<string, string>> headers = {},
|
explicit Wget(Promise<unique_ptr<HttpQuery>> promise, string url, std::vector<std::pair<string, string>> headers = {},
|
||||||
int32 timeout_in = 10, int32 ttl = 3, bool prefer_ipv6 = false,
|
int32 timeout_in = 10, int32 ttl = 3, bool prefer_ipv6 = false,
|
||||||
SslStream::VerifyPeer verify_peer = SslStream::VerifyPeer::On);
|
SslStream::VerifyPeer verify_peer = SslStream::VerifyPeer::On, string content = {},
|
||||||
|
string content_type = {});
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Status try_init();
|
Status try_init();
|
||||||
@ -46,6 +47,8 @@ class Wget : public HttpOutboundConnection::Callback {
|
|||||||
int32 ttl_;
|
int32 ttl_;
|
||||||
bool prefer_ipv6_ = false;
|
bool prefer_ipv6_ = false;
|
||||||
SslStream::VerifyPeer verify_peer_;
|
SslStream::VerifyPeer verify_peer_;
|
||||||
|
string content_;
|
||||||
|
string content_type_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
Loading…
Reference in New Issue
Block a user