#include <curl.h>
◆ Method
◆ CurlRequest() [1/4]
◆ CurlRequest() [2/4]
◆ ~CurlRequest()
uvco::CurlRequest::~CurlRequest |
( |
| ) |
|
|
default |
◆ CurlRequest() [3/4]
uvco::CurlRequest::CurlRequest |
( |
std::weak_ptr< UvCurlContext_ > |
context, |
|
|
Method |
method, |
|
|
std::string |
url |
|
) |
| |
|
private |
Initialize a GET request.
535 :
core_{std::make_unique<CurlRequestCore_>(std::move(context))} {
536 switch (method) {
538 core_->initGet(std::move(url));
539 break;
540 default:
541 BOOST_ASSERT(false);
542 }
543}
std::unique_ptr< CurlRequestCore_ > core_
Definition curl.h:73
◆ CurlRequest() [4/4]
uvco::CurlRequest::CurlRequest |
( |
std::weak_ptr< UvCurlContext_ > |
context, |
|
|
Method |
method, |
|
|
std::string |
url, |
|
|
std::span< const std::pair< std::string, std::string > > |
fields |
|
) |
| |
|
private |
Initialize a POST request.
548 :
core_{std::make_unique<CurlRequestCore_>(std::move(context))} {
549
550 switch (method) {
552 core_->initPost(std::move(url), fields);
553 break;
554 default:
555 BOOST_ASSERT(false);
556 }
557}
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ setTimeoutMs()
void uvco::CurlRequest::setTimeoutMs |
( |
long |
timeoutMs | ) |
|
559 {
560 curl_easy_setopt(
core_->easyHandle_, CURLOPT_TIMEOUT_MS, timeoutMs);
561}
◆ start()
Start the request. This method is a generator that yields received chunks of the remote resource. Make sure to always co_await
the returned MultiPromise until receiving a std::nullopt
.
The Curl
instance must not be closed before the request has finished.
567 {
568
569
570 while (true) {
571 auto result =
co_await *
core_;
572 if (result.has_value()) {
573 co_yield std::move(result.value());
574 continue;
575 }
576
577 break;
578 }
579
580 if (
core_->curlStatus() &&
core_->curlStatus().value() != CURLE_OK) {
581 throw CurlException(
core_->curlStatus().value(), std::string{core_->url()});
582 }
583 if (
core_->uvStatus() &&
core_->uvStatus().value() != 0) {
584 throw UvcoException{
585 core_->uvStatus().value(),
586 fmt::format(
"Socket error while fetching {}",
core_->url())};
587 }
588
589 co_return;
590}
◆ statusCode()
std::optional< long > uvco::CurlRequest::statusCode |
( |
| ) |
const |
Return the status code of the request after it has finished.
563 {
564 return core_->responseCode();
565}
◆ Curl
◆ core_
The documentation for this class was generated from the following files: