roar
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | List of all members
Roar::Request< BodyT > Class Template Reference

This class extends the boost::beast::http::request<BodyT> with additional convenience. More...

#include <request.hpp>

Collaboration diagram for Roar::Request< BodyT >:

Public Types

using self_type = Request< BodyT >
 
using beast_request = boost::beast::http::request< BodyT >
 

Public Member Functions

 Request ()
 
 Request (beast_request req)
 Construct a new Request object from a beast request to upgrade it.
 
 Request (beast_request req, Detail::RequestExtensions &&extensions)
 Construct a new Request object from a beast request and takes extensions of a previous request object.
 
std::string path () const
 Returns only the path of the url.
 
void target (std::string_view target)
 
std::string_view target () const
 
Request< BodyT > & host (std::string &&host)
 
Request< BodyT > & host (std::string const &host)
 
Request< BodyT > & host (std::string_view host)
 
Request< BodyT > & host (char const *host)
 
std::string host () const
 
Request< BodyT > & port (std::string &&port)
 
Request< BodyT > & port (std::string const &port)
 
Request< BodyT > & port (std::string_view port)
 
Request< BodyT > & port (unsigned short port)
 
Request< BodyT > & port (char const *port)
 
std::string port () const
 
Request< BodyT > & setHeader (boost::beast::http::field field, std::string value)
 
auto const & query () const
 Returns the query part of the url as an unordered_map<string, string>.
 
auto const & pathMatches () const
 Retrieves regex matches for this request with the registered route.
 
Request< BodyT > & pathMatches (std::vector< std::string > &&matches)
 Sets regex matches for this request with the registered route.
 
template<typename FieldT >
std::vector< std::string > splitCommaSeperatedHeaderEntry (FieldT &&field) const
 Retrieves a header which value is a typically comma seperated list as a vector of string.
 
bool isWebsocketUpgrade () const
 Is this a websocket upgrade request?
 
Detail::RequestExtensions ejectExtensions () &&
 Rips extensions out of this request object intended to be implanted into another request object.
 
bool expectsContinue () const
 Returns true if the request expects a continue response.
 
void expectsContinue (bool enable)
 enables/disables the expect continue header.
 
std::optional< std::size_t > contentLength () const
 Returns the content length header.
 
void contentLength (std::size_t length)
 Sets the content length header.
 
std::optional< Rangesranges () const
 Extracts the Range header.
 
std::optional< AuthorizationScheme > authorizationScheme () const
 Returns the authorization scheme of the Authorization header if it exists.
 
std::optional< BasicAuthbasicAuth () const
 Returns a basic auth object if the authorization scheme is "Basic".
 
Request< BodyT > & basicAuth (BasicAuth const &auth)
 
std::optional< DigestAuthdigestAuth () const
 Returns a digest auth object with all digest auth information.
 
Request< BodyT > & digestAuth (DigestAuth const &auth)
 
std::optional< std::string > bearerAuth () const
 Returns token data of bearer authentication method.
 
Request< BodyT > & bearerAuth (std::string const &token)
 
std::unordered_map< std::string, std::string > getCookies () const
 Gets all cookies.
 

Private Member Functions

void parseTarget ()
 Extracts path and query from boost::beast::http::request::target()
 
std::unordered_map< std::string, std::string > parseQuery (std::string_view queryString) const
 Transforms the query part from string to map.
 

Additional Inherited Members

- Private Attributes inherited from Roar::Detail::RequestExtensions
std::optional< std::vector< std::string > > regexMatches_
 
std::string path_
 
std::unordered_map< std::string, std::string > query_
 
std::string host_
 
std::string port_
 

Detailed Description

template<typename BodyT>
class Roar::Request< BodyT >

This class extends the boost::beast::http::request<BodyT> with additional convenience.

Template Parameters
BodyTBody type of the request. (empty_body, string_body, ...) See boost beast bodies.

Member Typedef Documentation

◆ beast_request

template<typename BodyT >
using Roar::Request< BodyT >::beast_request = boost::beast::http::request<BodyT>

◆ self_type

template<typename BodyT >
using Roar::Request< BodyT >::self_type = Request<BodyT>

Constructor & Destructor Documentation

◆ Request() [1/3]

template<typename BodyT >
Roar::Request< BodyT >::Request ( )
inline

◆ Request() [2/3]

template<typename BodyT >
Roar::Request< BodyT >::Request ( beast_request  req)
inlineexplicit

Construct a new Request object from a beast request to upgrade it.

Parameters
reqA beast http request.

◆ Request() [3/3]

template<typename BodyT >
Roar::Request< BodyT >::Request ( beast_request  req,
Detail::RequestExtensions &&  extensions 
)
inlineexplicit

Construct a new Request object from a beast request and takes extensions of a previous request object.

Parameters
req

Member Function Documentation

◆ authorizationScheme()

template<typename BodyT >
std::optional< AuthorizationScheme > Roar::Request< BodyT >::authorizationScheme ( ) const
inline

Returns the authorization scheme of the Authorization header if it exists.

◆ basicAuth() [1/2]

template<typename BodyT >
std::optional< BasicAuth > Roar::Request< BodyT >::basicAuth ( ) const
inline

Returns a basic auth object if the authorization scheme is "Basic".

◆ basicAuth() [2/2]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::basicAuth ( BasicAuth const &  auth)
inline

◆ bearerAuth() [1/2]

template<typename BodyT >
std::optional< std::string > Roar::Request< BodyT >::bearerAuth ( ) const
inline

Returns token data of bearer authentication method.

◆ bearerAuth() [2/2]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::bearerAuth ( std::string const &  token)
inline

◆ contentLength() [1/2]

template<typename BodyT >
std::optional< std::size_t > Roar::Request< BodyT >::contentLength ( ) const
inline

Returns the content length header.

Returns
std::optional<std::size_t>

◆ contentLength() [2/2]

template<typename BodyT >
void Roar::Request< BodyT >::contentLength ( std::size_t  length)
inline

Sets the content length header.

Parameters
length

◆ digestAuth() [1/2]

template<typename BodyT >
std::optional< DigestAuth > Roar::Request< BodyT >::digestAuth ( ) const
inline

Returns a digest auth object with all digest auth information.

◆ digestAuth() [2/2]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::digestAuth ( DigestAuth const &  auth)
inline

◆ ejectExtensions()

template<typename BodyT >
Detail::RequestExtensions Roar::Request< BodyT >::ejectExtensions ( ) &&
inline

Rips extensions out of this request object intended to be implanted into another request object.

Returns
Detail::RequestExtensions

◆ expectsContinue() [1/2]

template<typename BodyT >
bool Roar::Request< BodyT >::expectsContinue ( ) const
inline

Returns true if the request expects a continue response.

Returns
true
false

◆ expectsContinue() [2/2]

template<typename BodyT >
void Roar::Request< BodyT >::expectsContinue ( bool  enable)
inline

enables/disables the expect continue header.

Parameters
enable

◆ getCookies()

template<typename BodyT >
std::unordered_map< std::string, std::string > Roar::Request< BodyT >::getCookies ( ) const
inline

Gets all cookies.

Returns
std::vector<Cookie> A list of cookies.

◆ host() [1/5]

template<typename BodyT >
std::string Roar::Request< BodyT >::host ( ) const
inline

◆ host() [2/5]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::host ( char const *  host)
inline

◆ host() [3/5]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::host ( std::string &&  host)
inline

◆ host() [4/5]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::host ( std::string const &  host)
inline

◆ host() [5/5]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::host ( std::string_view  host)
inline

◆ isWebsocketUpgrade()

template<typename BodyT >
bool Roar::Request< BodyT >::isWebsocketUpgrade ( ) const
inline

Is this a websocket upgrade request?

Returns
true Yes it is.
false No it is not.

◆ parseQuery()

template<typename BodyT >
std::unordered_map< std::string, std::string > Roar::Request< BodyT >::parseQuery ( std::string_view  queryString) const
inlineprivate

Transforms the query part from string to map.

Parameters
queryStringThe query as a complete string.
Returns
std::unordered_map<std::string, std::string> A map containing the query key/value pairs.

◆ parseTarget()

template<typename BodyT >
void Roar::Request< BodyT >::parseTarget ( )
inlineprivate

Extracts path and query from boost::beast::http::request::target()

◆ path()

template<typename BodyT >
std::string Roar::Request< BodyT >::path ( ) const
inline

Returns only the path of the url.

Returns
auto const& The path.

◆ pathMatches() [1/2]

template<typename BodyT >
auto const & Roar::Request< BodyT >::pathMatches ( ) const
inline

Retrieves regex matches for this request with the registered route.

Returns
auto const& matches[0] = full match, matches[1] = first capture group, ...

◆ pathMatches() [2/2]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::pathMatches ( std::vector< std::string > &&  matches)
inline

Sets regex matches for this request with the registered route.

Parameters
matchesmatches[0] = full match, matches[1] = first capture group, ...

◆ port() [1/6]

template<typename BodyT >
std::string Roar::Request< BodyT >::port ( ) const
inline

◆ port() [2/6]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::port ( char const *  port)
inline

◆ port() [3/6]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::port ( std::string &&  port)
inline

◆ port() [4/6]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::port ( std::string const &  port)
inline

◆ port() [5/6]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::port ( std::string_view  port)
inline

◆ port() [6/6]

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::port ( unsigned short  port)
inline

◆ query()

template<typename BodyT >
auto const & Roar::Request< BodyT >::query ( ) const
inline

Returns the query part of the url as an unordered_map<string, string>.

Returns
auto const& The query part.

◆ ranges()

template<typename BodyT >
std::optional< Ranges > Roar::Request< BodyT >::ranges ( ) const
inline

Extracts the Range header.

Returns
Ranges a parsed format of the range header.

◆ setHeader()

template<typename BodyT >
Request< BodyT > & Roar::Request< BodyT >::setHeader ( boost::beast::http::field  field,
std::string  value 
)
inline

◆ splitCommaSeperatedHeaderEntry()

template<typename BodyT >
template<typename FieldT >
std::vector< std::string > Roar::Request< BodyT >::splitCommaSeperatedHeaderEntry ( FieldT &&  field) const
inline

Retrieves a header which value is a typically comma seperated list as a vector of string.

Returns
std::vector<std::string> A value list.

◆ target() [1/2]

template<typename BodyT >
std::string_view Roar::Request< BodyT >::target ( ) const
inline

◆ target() [2/2]

template<typename BodyT >
void Roar::Request< BodyT >::target ( std::string_view  target)
inline

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