diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-10-08 06:41:18 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-10-08 06:41:18 +0100 |
commit | 60d2c5bbe19b7cb3cf7b3c39dbcb541324519caf (patch) | |
tree | 4268e876f25df71619d1fafbb8490413322c244d /icespider/fcgi/xwwwFormUrlEncoded.h | |
parent | Increased flexibility for reading post body content and support for deseriali... (diff) | |
download | icespider-60d2c5bbe19b7cb3cf7b3c39dbcb541324519caf.tar.bz2 icespider-60d2c5bbe19b7cb3cf7b3c39dbcb541324519caf.tar.xz icespider-60d2c5bbe19b7cb3cf7b3c39dbcb541324519caf.zip |
Use a single implementation for parsing www form url encoded data in post and query string
Diffstat (limited to 'icespider/fcgi/xwwwFormUrlEncoded.h')
-rw-r--r-- | icespider/fcgi/xwwwFormUrlEncoded.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/icespider/fcgi/xwwwFormUrlEncoded.h b/icespider/fcgi/xwwwFormUrlEncoded.h new file mode 100644 index 0000000..fe6aa00 --- /dev/null +++ b/icespider/fcgi/xwwwFormUrlEncoded.h @@ -0,0 +1,34 @@ +#ifndef ICESPIDER_CGI_XWWWFORMURLENCODED_H +#define ICESPIDER_CGI_XWWWFORMURLENCODED_H + +#include <slicer/serializer.h> +#include <boost/algorithm/string/split.hpp> + +namespace IceSpider { + class XWwwFormUrlEncoded : public Slicer::Deserializer { + public: + typedef boost::function<void(const std::string &, const std::string &)> KVh; + + XWwwFormUrlEncoded(std::istream & in); + + void Deserialize(Slicer::ModelPartForRootPtr mp) override; + static inline void iterateVars(const std::string & input, const KVh & h); + + private: + + static inline void iterateVars(const KVh & h, boost::algorithm::split_iterator<std::string::const_iterator> pi); + static std::string urldecode(std::string::const_iterator s, std::string::const_iterator); + + void iterateVars(const KVh & h); + + void DeserializeSimple(Slicer::ModelPartPtr mp); + void DeserializeComplex(Slicer::ModelPartPtr mp); + void DeserializeDictionary(Slicer::ModelPartPtr mp); + + const std::string input; + }; + +}; + +#endif + |