Web framework C++  2.0.0
Simple web framework on c++ designed to easily create web pages, etc
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
FormParser Class Referenceabstract

Template methods pattern for parsing form. More...

#include <form_parser.h>

Inheritance diagram for FormParser:
Inheritance graph
Collaboration diagram for FormParser:
Collaboration graph

Public Member Functions

KeyEntityStorageparseForm (std::string &httpRequest, KeyValueStorage *KVPStorage=nullptr)
 
virtual ~FormParser ()
 

Protected Member Functions

void selectFormBody ()
 
virtual void actionBeforeSelectingBody ()
 
virtual void parseNextKey (size_t startPosition, size_t endPosition)=0
 
virtual void parseNextValue (size_t startPosition, size_t endPosition)=0
 
virtual void actionBeforeValueParsing (size_t keyStart, size_t keyEnd)
 
KeyValueStorage getKeyValuePairs ()
 
void setCurrentValue (FormEntity *valueCurrent)
 

Protected Attributes

KeyEntityStoragevalues = nullptr
 
FormEntityvalueCurrent = nullptr
 
std::string keyCurrent
 
std::string formBody
 
std::string valuesDelimiter
 
std::string pairsDelimiter
 

Detailed Description

Template methods pattern for parsing form.

This abstract class is intend to parse html form with different encodings. Template method is parseForm, which consists of abstracts methods, that could be implemented. There are FormMultipartData and FormUrlencoded concrete template methods in framework

Constructor & Destructor Documentation

virtual FormParser::~FormParser ( )
virtual

delete internal values

Member Function Documentation

virtual void FormParser::actionBeforeSelectingBody ( )
inlineprotectedvirtual

not required method to perform actions before finding body of form. By default do nothing

Reimplemented in FormMultipart.

virtual void FormParser::actionBeforeValueParsing ( size_t  keyStart,
size_t  keyEnd 
)
inlineprotectedvirtual

not required method to perform actions before parsing key of form. By default do nothing

Parameters
keyStartstart position of key in form body
keyEndend position of key in form body, exclusive

Reimplemented in FormMultipart.

KeyValueStorage FormParser::getKeyValuePairs ( )
protected

generate key value (string, string) pairs from from

Returns
key value pairs (string, string)
KeyEntityStorage* FormParser::parseForm ( std::string &  httpRequest,
KeyValueStorage KVPStorage = nullptr 
)

Template method to parse html forms

Parameters
httpRequestserialized http request
KVPStorageout parameter. If not null, write key value pairs (string, string) to out parameter
Returns
key value pairs (string, FormEntity object)
virtual void FormParser::parseNextKey ( size_t  startPosition,
size_t  endPosition 
)
protectedpure virtual

Parse key of html form

Parameters
startPositionstart position of key in form body
endPositionend position of key in form body, exclusive

Implemented in FormMultipart, and FormUrlEncoded.

virtual void FormParser::parseNextValue ( size_t  startPosition,
size_t  endPosition 
)
protectedpure virtual

Parse value of html form

Parameters
startPositionstart position of value in form body
endPositionend position of value in form body, exclusive

Implemented in FormMultipart, and FormUrlEncoded.

void FormParser::selectFormBody ( )
protected

Parse http request to find body of form and then store it in parser

void FormParser::setCurrentValue ( FormEntity valueCurrent)
protected
Parameters
valueCurrent

Member Data Documentation

std::string FormParser::formBody
protected
std::string FormParser::keyCurrent
protected
std::string FormParser::pairsDelimiter
protected
FormEntity* FormParser::valueCurrent = nullptr
protected
KeyEntityStorage* FormParser::values = nullptr
protected
std::string FormParser::valuesDelimiter
protected

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