C and C++ web framework.
http://rapida.vilor.one/docs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
1.9 KiB
110 lines
1.9 KiB
/* SPDX-License-Identifier: GPL-3.0-or-later */ |
|
/* Copyright 2022 Ivan Polyakov */ |
|
|
|
#ifndef RAPIDA_REQUEST_HXX_ENTRY |
|
#define RAPIDA_REQUEST_HXX_ENTRY |
|
|
|
#include "Query.hxx" |
|
#include "request.h" |
|
|
|
namespace rpd { |
|
/*! |
|
* \brief C++ request wrapper. |
|
*/ |
|
class Request { |
|
public: |
|
/*! |
|
* \brief Constructor. |
|
* |
|
* Creates C++ wrapper from original C request. |
|
* |
|
* \param req C request implementation. |
|
*/ |
|
Request(rpd_req *req) |
|
{ |
|
this->req = req; |
|
} |
|
|
|
/*! |
|
* \brief Gets request method. |
|
* |
|
* \return Request method. |
|
*/ |
|
rpd_req_methods method() const |
|
{ |
|
return req->method; |
|
} |
|
|
|
/*! |
|
* \brief Gets requested URL. |
|
* |
|
* \return Request URL. |
|
*/ |
|
const rpd_url *path() const |
|
{ |
|
return &req->path; |
|
} |
|
|
|
/*! |
|
* \brief Gets query parameters. |
|
* |
|
* \return Query parameters. |
|
*/ |
|
Query query() const |
|
{ |
|
return &req->query; |
|
} |
|
|
|
/*! |
|
* \brief Gets URL parameters. |
|
* |
|
* If you specify route like <b>/some/:dynamic/route</b>, |
|
* middle route segment can be accesed by the _dynamic_ key. |
|
* |
|
* \return URL parameters as key-value pairs. |
|
*/ |
|
KeyVal params() const |
|
{ |
|
return &req->params; |
|
} |
|
|
|
/*! |
|
* \brief Gets the request header. |
|
* |
|
* \params key Header key. |
|
* |
|
* \return Found header or NULL. |
|
*/ |
|
const char *header(const char *key) const; |
|
|
|
/*! |
|
* \brief Gets all request headers. |
|
* |
|
* \return Key-value pairs. |
|
*/ |
|
KeyVal headers() const |
|
{ |
|
return &req->headers; |
|
} |
|
|
|
/*! |
|
* \brief Gets request body content. |
|
* |
|
* \return Body content. |
|
*/ |
|
const char *body() const |
|
{ |
|
return req->body; |
|
} |
|
|
|
/*! |
|
* \brief Destructor. |
|
*/ |
|
virtual ~Request() { } |
|
|
|
private: |
|
rpd_req *req; //< Composition with C implementation. |
|
}; |
|
} |
|
|
|
#endif // RAPIDA_REQUEST_HXX_ENTRY
|
|
|