Encapsulates an incoming or outgoing request. More...

#include <HttpRequest.h>

Collaboration diagram for HttpRequest:

Public Types

using SslInitDelegate = Delegate< void(Ssl::Session &session, HttpRequest &request)>
 Callback delegate type used to initialise an SSL session for a given request. More...
 

Public Member Functions

 HttpRequest ()
 
 HttpRequest (const Url &uri)
 
 HttpRequest (const HttpRequest &value)
 Copy constructor. More...
 
HttpRequestclone () const
 Clone this request into a new object using the copy constructor. More...
 
 ~HttpRequest ()
 
HttpRequestsetURL (const Url &uri)
 
HttpRequestsetMethod (HttpMethod method)
 
HttpRequestsetHeaders (const HttpHeaders &headers)
 
HttpRequestsetHeader (const String &name, const String &value)
 
HttpRequestsetPostParameter (const String &name, const String &value)
 
HttpRequestsetFile (const String &formElementName, ReadWriteStream *stream)
 Sets a file to be sent. More...
 
HttpRequestsetAuth (AuthAdapter *adapter)
 
const StringgetHeader (const String &name)
 Get header field value. More...
 
const StringgetPostParameter (const String &name)
 Get POST parameter value. More...
 
String getQueryParameter (const String &name, const String &defaultValue=nullptr) const
 Get parameter from query fields. More...
 
String getBody ()
 Moves content from the body stream into a String. More...
 
IDataSourceStreamgetBodyStream ()
 Return the current body stream. More...
 
HttpRequestsetResponseStream (ReadWriteStream *stream)
 Instead of storing the response body we can set a stream that will take care to process it. More...
 
ReadWriteStreamgetResponseStream ()
 Get the response stream (if any) More...
 
HttpRequestonHeadersComplete (RequestHeadersCompletedDelegate delegateFunction)
 
HttpRequestonBody (RequestBodyDelegate delegateFunction)
 
HttpRequestonRequestComplete (RequestCompletedDelegate delegateFunction)
 
void reset ()
 Clear buffers and reset to default state in preparation for another request. More...
 
HttpRequestonSslInit (SslInitDelegate delegate)
 To customise SSL session options, provide a callback. More...
 
String toString () const
 Tries to present a readable version of the current request values. More...
 
Set request body content
HttpRequestsetBody (const String &body)
 Set body from String object. More...
 
HttpRequestsetBody (String &&body) noexcept
 Set body from String object using move semantics: body will be invalid on return. More...
 
HttpRequestsetBody (IDataSourceStream *stream)
 Set body using given stream object, and retain ownership. More...
 
HttpRequestsetBody (const uint8_t *rawData, size_t length)
 Set body content by copying binary data. More...
 

Static Public Member Functions

static String toString (const HttpRequest &req)
 Tries to present a readable version of the request. More...
 

Public Attributes

Url uri
 Request URL. More...
 
HttpMethod method = HTTP_GET
 Request method. More...
 
HttpHeaders headers
 Request headers. More...
 
HttpParams postParams
 POST parameters. More...
 
HttpFiles files
 Attached files. More...
 
int retries = 0
 how many times the request should be send again... More...
 
void * args = nullptr
 Used to store data that should be valid during a single request. More...
 

Protected Attributes

RequestHeadersCompletedDelegate headersCompletedDelegate
 
RequestBodyDelegate requestBodyDelegate
 
RequestCompletedDelegate requestCompletedDelegate
 
SslInitDelegate sslInitDelegate
 
IDataSourceStreambodyStream = nullptr
 
ReadWriteStreamresponseStream = nullptr
 User-requested stream to store response. More...
 
AuthAdapterauth = nullptr
 

Friends

class HttpClientConnection
 
class HttpServerConnection
 

Detailed Description

Encapsulates an incoming or outgoing request.

Member Typedef Documentation

◆ SslInitDelegate

Callback delegate type used to initialise an SSL session for a given request.

Constructor & Destructor Documentation

◆ HttpRequest() [1/3]

HttpRequest::HttpRequest ( )
inline

◆ HttpRequest() [2/3]

HttpRequest::HttpRequest ( const Url uri)
inline

◆ HttpRequest() [3/3]

HttpRequest::HttpRequest ( const HttpRequest value)
inline

Copy constructor.

Note
Internal streams are not copied so these must be dealt with afterwards

◆ ~HttpRequest()

HttpRequest::~HttpRequest ( )
inline

Member Function Documentation

◆ clone()

HttpRequest* HttpRequest::clone ( ) const
inline

Clone this request into a new object using the copy constructor.

Return values
HttpRequest*The new request object
See also
HttpRequest(const HttpRequest& value)

◆ getBody()

String HttpRequest::getBody ( )
inline

Moves content from the body stream into a String.

Return values
String
Note
Move semantics are used to ensure that no/minimal additional memory is required. If your application has set a non-memory stream type then the method will fail and return an invalid String. The stream content will be left unchanged.

◆ getBodyStream()

IDataSourceStream* HttpRequest::getBodyStream ( )
inline

Return the current body stream.

Return values
IDataSourceStream*
Note
may return null

◆ getHeader()

const String& HttpRequest::getHeader ( const String name)
inline

Get header field value.

Parameters
nameName of field
Return values
constString& Value, will be invalid (i.e. if() == false) if field not present

◆ getPostParameter()

const String& HttpRequest::getPostParameter ( const String name)
inline

Get POST parameter value.

Parameters
nameName of parameter
Return values
constString& Value, will be invalid (i.e. if() == false) if field not present

◆ getQueryParameter()

String HttpRequest::getQueryParameter ( const String name,
const String defaultValue = nullptr 
) const
inline

Get parameter from query fields.

Parameters
nameName of parameter
defaultValueOptional default value to use if requested parameter not present

◆ getResponseStream()

ReadWriteStream* HttpRequest::getResponseStream ( )
inline

Get the response stream (if any)

◆ onBody()

HttpRequest* HttpRequest::onBody ( RequestBodyDelegate  delegateFunction)
inline

◆ onHeadersComplete()

HttpRequest* HttpRequest::onHeadersComplete ( RequestHeadersCompletedDelegate  delegateFunction)
inline

◆ onRequestComplete()

HttpRequest* HttpRequest::onRequestComplete ( RequestCompletedDelegate  delegateFunction)
inline

◆ onSslInit()

HttpRequest* HttpRequest::onSslInit ( SslInitDelegate  delegate)
inline

To customise SSL session options, provide a callback.

Parameters
delegateInvoked before creating SSL connection

◆ reset()

void HttpRequest::reset ( )

Clear buffers and reset to default state in preparation for another request.

◆ setAuth()

HttpRequest* HttpRequest::setAuth ( AuthAdapter adapter)
inline

◆ setBody() [1/4]

HttpRequest* HttpRequest::setBody ( const String body)
inline

Set body from String object.

◆ setBody() [2/4]

HttpRequest* HttpRequest::setBody ( const uint8_t rawData,
size_t  length 
)

Set body content by copying binary data.

Parameters
rawDataData to copy
lengthNumber of bytes to copy

◆ setBody() [3/4]

HttpRequest* HttpRequest::setBody ( IDataSourceStream stream)

Set body using given stream object, and retain ownership.

◆ setBody() [4/4]

HttpRequest* HttpRequest::setBody ( String &&  body)
noexcept

Set body from String object using move semantics: body will be invalid on return.

◆ setFile()

HttpRequest* HttpRequest::setFile ( const String formElementName,
ReadWriteStream stream 
)
inline

Sets a file to be sent.

Parameters
formElementNameThe name of the element in the form
streamPointer to the stream (doesn't have to be a FileStream)
Return values
HttpRequest*

◆ setHeader()

HttpRequest* HttpRequest::setHeader ( const String name,
const String value 
)
inline

◆ setHeaders()

HttpRequest* HttpRequest::setHeaders ( const HttpHeaders headers)
inline

◆ setMethod()

HttpRequest* HttpRequest::setMethod ( HttpMethod  method)
inline

◆ setPostParameter()

HttpRequest* HttpRequest::setPostParameter ( const String name,
const String value 
)
inline

◆ setResponseStream()

HttpRequest* HttpRequest::setResponseStream ( ReadWriteStream stream)

Instead of storing the response body we can set a stream that will take care to process it.

Parameters
stream
Return values
HttpRequest*
Note
The response to this request will be stored in the user-provided stream.

◆ setURL()

HttpRequest* HttpRequest::setURL ( const Url uri)
inline

◆ toString() [1/2]

String HttpRequest::toString ( ) const

Tries to present a readable version of the current request values.

Return values
String

◆ toString() [2/2]

static String HttpRequest::toString ( const HttpRequest req)
inlinestatic

Tries to present a readable version of the request.

Parameters
req
Return values
String

Friends And Related Function Documentation

◆ HttpClientConnection

friend class HttpClientConnection
friend

◆ HttpServerConnection

friend class HttpServerConnection
friend

Member Data Documentation

◆ args

void* HttpRequest::args = nullptr

Used to store data that should be valid during a single request.

◆ auth

AuthAdapter* HttpRequest::auth = nullptr
protected

◆ bodyStream

IDataSourceStream* HttpRequest::bodyStream = nullptr
protected

◆ files

HttpFiles HttpRequest::files

Attached files.

◆ headers

HttpHeaders HttpRequest::headers

Request headers.

◆ headersCompletedDelegate

RequestHeadersCompletedDelegate HttpRequest::headersCompletedDelegate
protected

◆ method

HttpMethod HttpRequest::method = HTTP_GET

Request method.

◆ postParams

HttpParams HttpRequest::postParams

POST parameters.

◆ requestBodyDelegate

RequestBodyDelegate HttpRequest::requestBodyDelegate
protected

◆ requestCompletedDelegate

RequestCompletedDelegate HttpRequest::requestCompletedDelegate
protected

◆ responseStream

ReadWriteStream* HttpRequest::responseStream = nullptr
protected

User-requested stream to store response.

◆ retries

int HttpRequest::retries = 0

how many times the request should be send again...

◆ sslInitDelegate

SslInitDelegate HttpRequest::sslInitDelegate
protected

◆ uri

Url HttpRequest::uri

Request URL.


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