Hydra 0.0.1
A convenience networking library for modern C++
 
Loading...
Searching...
No Matches
sourcemeta::hydra::http::ClientStream Class Reference

Public Member Functions

 ClientStream (std::string url)
 
 ClientStream (ClientStream &&other) noexcept
 
auto operator= (ClientStream &&other) noexcept -> ClientStream &
 
 ~ClientStream ()
 Destruct an instance of this class.
 
auto method (const Method method) noexcept -> void
 
auto method () const noexcept -> Method
 
auto header (std::string_view key, std::string_view value) -> void
 
auto header (std::string_view key, int value) -> void
 
auto url () const -> std::string_view
 

Detailed Description

This class is used to perform a streaming HTTP request.

Constructor & Destructor Documentation

◆ ClientStream() [1/2]

sourcemeta::hydra::http::ClientStream::ClientStream ( std::string  url)

Construct a streaming HTTP request to a given URL. For example:

#include <sourcemeta/hydra/http.h>
#include <iostream>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
request.method(sourcemeta::hydra::http::Method::GET);
request.on_data([](const sourcemeta::hydra::http::Status status,
std::span<const std::uint8_t> buffer) noexcept {
std::cerr << "Code: " << status << "\n";
// Copy to standard output
for (const auto byte : buffer) {
std::cout << static_cast<char>(byte);
}
});
request.on_header([](const sourcemeta::hydra::http::Status status,
std::string_view key,
std::string_view value) noexcept {
std::cerr << "Code: " << status << "\n";
// Print the incoming headers
std::cout << key << " -> " << value << "\n";
});
request.send().wait();
Definition http_stream.h:20
auto method(const Method method) noexcept -> void
Status
Definition http_status.h:10

◆ ClientStream() [2/2]

sourcemeta::hydra::http::ClientStream::ClientStream ( ClientStream &&  other)
noexcept

Move an instance of this class. For example:

#include <sourcemeta/hydra/http.h>
#include <utility>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
sourcemeta::hydra::http::ClientStream new_request{std::move(request)};

Member Function Documentation

◆ header() [1/2]

auto sourcemeta::hydra::http::ClientStream::header ( std::string_view  key,
int  value 
) -> void

Set an HTTP request header whose value is an integer. For example:

#include <sourcemeta/hydra/http.h>
#include <iostream>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
request.header("X-Favourite-Number", 3);
request.on_data([](const sourcemeta::hydra::http::Status status,
std::span<const std::uint8_t> buffer) noexcept {
std::cerr << "Code: " << status << "\n";
// Copy to standard output
for (const auto byte : buffer) {
std::cout << static_cast<char>(byte);
}
});
request.send().wait();
auto header(std::string_view key, std::string_view value) -> void

◆ header() [2/2]

auto sourcemeta::hydra::http::ClientStream::header ( std::string_view  key,
std::string_view  value 
) -> void

Set an HTTP request header. For example:

#include <sourcemeta/hydra/http.h>
#include <iostream>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
request.header("X-Send-With", "Hydra");
request.on_data([](const sourcemeta::hydra::http::Status status,
std::span<const std::uint8_t> buffer) noexcept {
std::cerr << "Code: " << status << "\n";
// Copy to standard output
for (const auto byte : buffer) {
std::cout << static_cast<char>(byte);
}
});
request.send().wait();

◆ method() [1/2]

auto sourcemeta::hydra::http::ClientStream::method ( ) const -> Method
noexcept

Retrieve the HTTP method that the request will be sent with. For example:

#include <sourcemeta/hydra/http.h>
#include <iostream>
#include <cassert>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
request.method(sourcemeta::hydra::http::Method::HEAD);
assert(request.method() == sourcemeta::hydra::http::Method::HEAD);

◆ method() [2/2]

auto sourcemeta::hydra::http::ClientStream::method ( const Method  method) -> void
noexcept

Specify the HTTP method to use for the request. If not set, it defauls to GET. For example:

#include <sourcemeta/hydra/http.h>
#include <iostream>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
// Send a POST request
request.method(sourcemeta::hydra::http::Method::POST);
request.on_data([](const sourcemeta::hydra::http::Status status,
std::span<const std::uint8_t> buffer) noexcept {
std::cerr << "Code: " << status << "\n";
// Copy to standard output
for (const auto byte : buffer) {
std::cout << static_cast<char>(byte);
}
});
request.send().wait();

◆ operator=()

auto sourcemeta::hydra::http::ClientStream::operator= ( ClientStream &&  other) -> ClientStream &
noexcept

Move an instance of this class. For example:

#include <sourcemeta/hydra/http.h>
#include <utility>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
sourcemeta::hydra::http::ClientStream new_request = std::move(request);

◆ url()

auto sourcemeta::hydra::http::ClientStream::url ( ) const -> std::string_view

Retrieve the URL that the request will be sent to. For example:

#include <sourcemeta/hydra/http.h>
#include <iostream>
sourcemeta::hydra::http::ClientStream request{"https://www.example.com"};
std::cout << request.url() << "\n";
auto url() const -> std::string_view

The documentation for this class was generated from the following file: