summaryrefslogtreecommitdiff
path: root/lib/httpserver/HTTPQueryDecoder.h
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2009-01-03 04:00:17 +0000
committerChris Wilson <chris+github@qwirx.com>2009-01-03 04:00:17 +0000
commitb7c52100d6ca16f75d5cfbad30f5d19cea380c6d (patch)
tree9ea2d71c77c18f07146f2138c49d41e1281bd16d /lib/httpserver/HTTPQueryDecoder.h
parent18e050f41b86a25af014661939a495397e53b6a5 (diff)
Copy HTTP server into Box, for use with S3 testing.
Diffstat (limited to 'lib/httpserver/HTTPQueryDecoder.h')
-rw-r--r--lib/httpserver/HTTPQueryDecoder.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/httpserver/HTTPQueryDecoder.h b/lib/httpserver/HTTPQueryDecoder.h
new file mode 100644
index 00000000..ca5afe7e
--- /dev/null
+++ b/lib/httpserver/HTTPQueryDecoder.h
@@ -0,0 +1,47 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: HTTPQueryDecoder.h
+// Purpose: Utility class to decode HTTP query strings
+// Created: 26/3/04
+//
+// --------------------------------------------------------------------------
+
+#ifndef HTTPQUERYDECODER__H
+#define HTTPQUERYDECODER__H
+
+#include "HTTPRequest.h"
+
+// --------------------------------------------------------------------------
+//
+// Class
+// Name: HTTPQueryDecoder
+// Purpose: Utility class to decode HTTP query strings
+// Created: 26/3/04
+//
+// --------------------------------------------------------------------------
+class HTTPQueryDecoder
+{
+public:
+ HTTPQueryDecoder(HTTPRequest::Query_t &rDecodeInto);
+ ~HTTPQueryDecoder();
+private:
+ // no copying
+ HTTPQueryDecoder(const HTTPQueryDecoder &);
+ HTTPQueryDecoder &operator=(const HTTPQueryDecoder &);
+public:
+
+ void DecodeChunk(const char *pQueryString, int QueryStringSize);
+ void Finish();
+
+private:
+ HTTPRequest::Query_t &mrDecodeInto;
+ std::string mCurrentKey;
+ std::string mCurrentValue;
+ bool mInKey;
+ char mEscaped[4];
+ int mEscapedState;
+};
+
+#endif // HTTPQUERYDECODER__H
+