Sming Framework API
Sming - Open Source framework for high efficiency WiFi SoC ESP8266 native development with C++ language.
HttpHeaders Class Reference

Encapsulates a set of HTTP header information. More...

#include <HttpHeaders.h>

Inheritance diagram for HttpHeaders:
HashMap< HttpHeaderFieldName, String >

Public Member Functions

 HttpHeaders (const HttpHeaders &headers)
 
String toString (HttpHeaderFieldName name) const
 
String toString (HttpHeaderFieldName name, const String &value) const
 
HttpHeaderFieldName fromString (const String &name) const
 Find the enumerated value for the given field name string. More...
 
const Stringoperator[] (const String &name) const
 Fetch a reference to the header field value by name. More...
 
Stringoperator[] (const String &name)
 Fetch a reference to the header field value by name. More...
 
String operator[] (unsigned index) const
 Return the HTTP header line for the value at the given index. More...
 
bool contains (const String &name) const
 
void remove (const String &name)
 
void setMultiple (const HttpHeaders &headers)
 
HttpHeadersoperator= (const HttpHeaders &headers)
 
void clear ()
 
DateTime getLastModifiedDate () const
 
DateTime getServerDate () const
 

Static Public Member Functions

static String toString (const String &name, const String &value)
 Produce a string for output in the HTTP header, with line ending. More...
 

Private Types

typedef bool(* comparator) (const HttpHeaderFieldName &, const HttpHeaderFieldName &)
 

Private Member Functions

unsigned int count () const
 
const HttpHeaderFieldName & keyAt (unsigned int idx) const
 
HttpHeaderFieldName & keyAt (unsigned int idx)
 
const StringvalueAt (unsigned int idx) const
 
StringvalueAt (unsigned int idx)
 
const Stringoperator[] (const HttpHeaderFieldName &key) const
 
Stringoperator[] (const HttpHeaderFieldName &key)
 
void allocate (unsigned int newSize)
 
int indexOf (const HttpHeaderFieldName &key) const
 
bool contains (const HttpHeaderFieldName &key) const
 
void removeAt (unsigned index)
 
void remove (const HttpHeaderFieldName &key)
 
void setMultiple (const HashMap< HttpHeaderFieldName, String > &map)
 
void setNullValue (const String &nullv)
 

Private Attributes

HttpHeaderFieldName ** keys
 
String ** values
 
String nil
 
uint16_t currentIndex
 
uint16_t size
 
comparator cb_comparator
 

Detailed Description

Encapsulates a set of HTTP header information.

Note
fields are stored as a map of field names vs. values. Standard fields may be accessed using enumeration tags. Behaviour is as for HashMap, with the addition of methods to support enumerated field names.
Todo:
add name and/or value escaping

Member Function Documentation

HttpHeaderFieldName HttpHeaders::fromString ( const String name) const

Find the enumerated value for the given field name string.

Parameters
name
Return values
HttpHeaderFieldNamefield name code, HTTP_HEADER_UNKNOWN if not recognised
Note
comparison is not case-sensitive
const String& HttpHeaders::operator[] ( const String name) const
inline

Fetch a reference to the header field value by name.

Parameters
name
Return values
constString& Reference to value
Note
if the field doesn't exist a null String reference is returned
String& HttpHeaders::operator[] ( const String name)
inline

Fetch a reference to the header field value by name.

Parameters
name
Return values
String&Reference to value
Note
if the field doesn't exist it is created with the default null value
String HttpHeaders::operator[] ( unsigned  index) const
inline

Return the HTTP header line for the value at the given index.

Parameters
index
Return values
String
Note
if the index is invalid,
static String HttpHeaders::toString ( const String name,
const String value 
)
static

Produce a string for output in the HTTP header, with line ending.

Parameters
name
value
Return values
String