blob: 4f6cdaedfe8e07f06341a86582eb7e6387d92fea (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#ifndef ICESPIDER_CGI_XWWWFORMURLENCODED_H
#define ICESPIDER_CGI_XWWWFORMURLENCODED_H
#include <visibility.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;
DLL_PUBLIC static void iterateVars(const std::string & input, const KVh & h, const std::string & split);
DLL_PUBLIC static std::string urldecode(std::string::const_iterator s, std::string::const_iterator);
DLL_PUBLIC static std::string urlencode(std::string::const_iterator s, std::string::const_iterator);
DLL_PUBLIC static std::string urlencode(const std::string & s);
private:
static inline void iterateVars(const KVh & h, boost::algorithm::split_iterator<std::string::const_iterator> pi);
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
|