SNode.C
Loading...
Searching...
No Matches
express::Request Class Reference

#include <Request.h>

Inheritance diagram for express::Request:
Collaboration diagram for express::Request:

Public Member Functions

 Request ()=default
 
 Request (const std::shared_ptr< web::http::server::Request > &request) noexcept
 
 Request (Request &)=delete
 
 Request (Request &&) noexcept=delete
 
Requestoperator= (Request &)=delete
 
Requestoperator= (Request &&) noexcept=delete
 
const std::string & param (const std::string &id, const std::string &fallBack="")
 
const std::string & get (const std::string &key, int i=0) const
 
const std::string & cookie (const std::string &key) const
 
const std::string & query (const std::string &key) const
 
- Public Member Functions inherited from utils::MultibleAttributeInjector
template<InjectableAttribute Attribute, fixed_string key = "">
constexpr bool setAttribute (const Attribute &attribute, const std::string &subKey="", bool overwrite=false)
 
template<InjectableAttribute Attribute, fixed_string key = "">
constexpr bool setAttribute (const Attribute &&attribute, const std::string &subKey="", bool overwrite=false)
 
template<InjectableAttribute Attribute, fixed_string key = "">
constexpr bool delAttribute (const std::string &subKey="")
 
template<InjectableAttribute Attribute, fixed_string key = "">
constexpr bool hasAttribute (const std::string &subKey="") const
 
template<InjectableAttribute Attribute, fixed_string key = "">
bool getAttribute (const std::function< void(Attribute &)> &onFound, const std::string &subKey="") const
 
template<InjectableAttribute Attribute, fixed_string key = "">
void getAttribute (const std::function< void(Attribute &)> &onFound, const std::function< void(const std::string &)> &onNotFound, const std::string &subKey="") const
 
void reset ()
 

Public Attributes

std::string originalUrl
 
std::string path
 
std::string file
 
std::map< std::string, std::string > params
 
std::string method
 
std::string url
 
std::string httpVersion
 
int httpMajor = 0
 
int httpMinor = 0
 
web::http::CiStringMap< std::string > queries
 
web::http::CiStringMap< std::string > headers
 
web::http::CiStringMap< std::string > cookies
 
std::vector< char > body
 

Private Member Functions

Requestextend ()
 

Private Attributes

std::shared_ptr< web::http::server::RequestrequestBase
 
std::string nullstr
 

Friends

class Response
 

Detailed Description

Definition at line 63 of file Request.h.

Constructor & Destructor Documentation

◆ Request() [1/4]

express::Request::Request ( )
default

◆ Request() [2/4]

express::Request::Request ( const std::shared_ptr< web::http::server::Request > & request)
explicitnoexcept

Definition at line 57 of file Request.cpp.

58 : requestBase(request)
59 , method(request->method)
60 , url(request->url)
61 , httpVersion(request->httpVersion)
62 , httpMajor(request->httpMajor)
63 , httpMinor(request->httpMinor)
64 , queries(std::move(request->queries))
65 , headers(request->headers) // Do not move headers as they are possibly still needed in the source request
66 , cookies(std::move(request->cookies))
67 , body(std::move(request->body)) {
68 extend();
69 }
Request & extend()
Definition Request.cpp:75
std::string httpVersion
Definition Request.h:97
web::http::CiStringMap< std::string > cookies
Definition Request.h:103
std::string url
Definition Request.h:96
std::vector< char > body
Definition Request.h:104
web::http::CiStringMap< std::string > queries
Definition Request.h:101
std::string method
Definition Request.h:95
std::shared_ptr< web::http::server::Request > requestBase
Definition Request.h:84
web::http::CiStringMap< std::string > headers
Definition Request.h:102
std::vector< char > body
Definition Request.h:88
CiStringMap< std::string > cookies
Definition Request.h:87
CiStringMap< std::string > headers
Definition Request.h:86
CiStringMap< std::string > queries
Definition Request.h:85
std::string httpVersion
Definition Request.h:81

References extend(), and Request().

Referenced by Request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Request() [3/4]

express::Request::Request ( Request & )
explicitdelete

◆ Request() [4/4]

express::Request::Request ( Request && )
explicitdeletenoexcept

Member Function Documentation

◆ cookie()

const std::string & express::Request::cookie ( const std::string & key) const

Definition at line 97 of file Request.cpp.

97 {
98 const std::map<std::string, std::string>::const_iterator it = cookies.find(key);
99
100 if (it != cookies.end()) {
101 return it->second;
102 }
103
104 return nullstr;
105 }
std::string nullstr
Definition Request.h:107

◆ extend()

Request & express::Request::extend ( )
private

Definition at line 75 of file Request.cpp.

75 {
78
79 if (url.length() <= 2 || !url.ends_with("/")) {
80 std::tie(path, file) = httputils::str_split_last(url, '/');
81
82 if (path.empty()) {
83 path = "/";
84 }
85 } else if (url.ends_with("/")) {
86 path = url;
87 path.pop_back();
88 }
89
90 return *this;
91 }
std::string originalUrl
Definition Request.h:76
std::string path
Definition Request.h:77
std::string file
Definition Request.h:78
std::pair< std::string, std::string > str_split_last(const std::string &base, char c_middle)
std::string url_decode(const std::string &text)

Referenced by Request().

Here is the caller graph for this function:

◆ get()

const std::string & express::Request::get ( const std::string & key,
int i = 0 ) const

Definition at line 93 of file Request.cpp.

93 {
94 return requestBase->get(key, i);
95 }
const std::string & get(const std::string &key, int i=0) const
Definition Request.cpp:53

◆ operator=() [1/2]

Request & express::Request::operator= ( Request && )
deletenoexcept

◆ operator=() [2/2]

Request & express::Request::operator= ( Request & )
delete

◆ param()

const std::string & express::Request::param ( const std::string & id,
const std::string & fallBack = "" )

Definition at line 71 of file Request.cpp.

71 {
72 return params.contains(id) ? params[id] : fallBack;
73 }
std::map< std::string, std::string > params
Definition Request.h:79

◆ query()

const std::string & express::Request::query ( const std::string & key) const

Definition at line 107 of file Request.cpp.

107 {
108 const std::map<std::string, std::string>::const_iterator it = queries.find(key);
109
110 if (it != queries.end()) {
111 return it->second;
112 }
113
114 return nullstr;
115 }

Friends And Related Symbol Documentation

◆ Response

friend class Response
friend

Definition at line 86 of file Request.h.

Member Data Documentation

◆ body

std::vector<char> express::Request::body

Definition at line 104 of file Request.h.

◆ cookies

web::http::CiStringMap<std::string> express::Request::cookies

Definition at line 103 of file Request.h.

◆ file

std::string express::Request::file

Definition at line 78 of file Request.h.

◆ headers

web::http::CiStringMap<std::string> express::Request::headers

Definition at line 102 of file Request.h.

◆ httpMajor

int express::Request::httpMajor = 0

Definition at line 98 of file Request.h.

◆ httpMinor

int express::Request::httpMinor = 0

Definition at line 99 of file Request.h.

◆ httpVersion

std::string express::Request::httpVersion

Definition at line 97 of file Request.h.

◆ method

std::string express::Request::method

Definition at line 95 of file Request.h.

◆ nullstr

std::string express::Request::nullstr
private

Definition at line 107 of file Request.h.

◆ originalUrl

std::string express::Request::originalUrl

Definition at line 76 of file Request.h.

◆ params

std::map<std::string, std::string> express::Request::params

Definition at line 79 of file Request.h.

◆ path

std::string express::Request::path

Definition at line 77 of file Request.h.

◆ queries

web::http::CiStringMap<std::string> express::Request::queries

Definition at line 101 of file Request.h.

◆ requestBase

std::shared_ptr<web::http::server::Request> express::Request::requestBase
private

Definition at line 84 of file Request.h.

◆ url

std::string express::Request::url

Definition at line 96 of file Request.h.


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