Web framework C++  2.0.0
Simple web framework on c++ designed to easily create web pages, etc
form_parser.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <unordered_map>
4 #include "form_entity.h"
5 
6 using KeyValueStorage = std::unordered_map<std::string, std::string>;
7 using KeyEntityStorage = std::unordered_map<std::string, FormEntity *>;
8 
18 class FormParser {
19 protected:
20  KeyEntityStorage * values = nullptr;
21  FormEntity * valueCurrent = nullptr;
22  std::string keyCurrent;
23  std::string formBody;
24  std::string valuesDelimiter;
25  std::string pairsDelimiter;
26 public:
38  KeyEntityStorage * parseForm(std::string & httpRequest, KeyValueStorage * KVPStorage = nullptr);
39 
43  virtual ~FormParser();
44 protected:
48  void selectFormBody();
49 
54  virtual void actionBeforeSelectingBody() {};
55 
64  virtual void parseNextKey(size_t startPosition, size_t endPosition) = 0;
65 
74  virtual void parseNextValue(size_t startPosition, size_t endPosition) = 0;
75 
85  virtual void actionBeforeValueParsing(size_t keyStart, size_t keyEnd) {};
86 
94 
99  void setCurrentValue(FormEntity * valueCurrent);
100 };
KeyEntityStorage * parseForm(std::string &httpRequest, KeyValueStorage *KVPStorage=nullptr)
FormEntity * valueCurrent
Definition: form_parser.h:21
std::string pairsDelimiter
Definition: form_parser.h:25
KeyEntityStorage * values
Definition: form_parser.h:20
virtual void actionBeforeValueParsing(size_t keyStart, size_t keyEnd)
Definition: form_parser.h:85
void setCurrentValue(FormEntity *valueCurrent)
virtual void parseNextKey(size_t startPosition, size_t endPosition)=0
void selectFormBody()
std::unordered_map< std::string, std::string > KeyValueStorage
Definition: form_parser.h:6
virtual void actionBeforeSelectingBody()
Definition: form_parser.h:54
KeyValueStorage getKeyValuePairs()
virtual void parseNextValue(size_t startPosition, size_t endPosition)=0
virtual ~FormParser()
std::string valuesDelimiter
Definition: form_parser.h:24
Wrapper class for value form.
Definition: form_entity.h:12
std::string keyCurrent
Definition: form_parser.h:22
std::string formBody
Definition: form_parser.h:23
std::unordered_map< std::string, FormEntity * > KeyEntityStorage
Definition: form_parser.h:7
Template methods pattern for parsing form.
Definition: form_parser.h:18