| 39 | } |
| 40 | |
| 41 | void run() { |
| 42 | self_ = shared_from_this(); |
| 43 | req_.version(11); // http 1.1 |
| 44 | switch (request_type_) { |
| 45 | case HttpCallback::RequestType::Get: |
| 46 | req_.method(http::verb::get); |
| 47 | req_.body().clear(); |
| 48 | payload_.clear(); |
| 49 | break; |
| 50 | case HttpCallback::RequestType::Post: |
| 51 | req_.method(http::verb::post); |
| 52 | req_.body() = std::move(payload_); |
| 53 | req_.prepare_payload(); |
| 54 | break; |
| 55 | } |
| 56 | req_.target(url_); |
| 57 | req_.set(http::field::host, PSTRING() << addr_.get_ip_str()); |
| 58 | req_.set(http::field::user_agent, "cocoon-worker"); |
| 59 | for (auto &h : headers_) { |
| 60 | req_.set(h.first, h.second); |
| 61 | } |
| 62 | |
| 63 | parser_.body_limit((std::numeric_limits<std::uint64_t>::max)()); |
| 64 | parser_.eager(true); |
| 65 | |
| 66 | resolver_.async_resolve(addr_.get_ip_str().str(), PSTRING() << addr_.get_port(), |
| 67 | beast::bind_front_handler(&HttpClientSession::on_resolve, shared_from_this())); |
| 68 | } |
| 69 | |
| 70 | private: |
| 71 | static bool allow_header(std::string name) { |
no test coverage detected