summaryrefslogtreecommitdiff
path: root/src/lib/json_server.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-12-10 01:08:56 +0100
committerCarl Hetherington <cth@carlh.net>2022-12-10 01:16:06 +0100
commit02b74112721d13a27b0bbaece714d5c8ea743d43 (patch)
tree3a27196ba8c53b603e0d3369593858e471a071f8 /src/lib/json_server.cc
parent11afb1f4bb9c8dd2e366ed216dd324d197d18b9a (diff)
Move some methods out of util.{cc,h}
Diffstat (limited to 'src/lib/json_server.cc')
-rw-r--r--src/lib/json_server.cc48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/lib/json_server.cc b/src/lib/json_server.cc
index 8c626ad1f..92d5c1171 100644
--- a/src/lib/json_server.cc
+++ b/src/lib/json_server.cc
@@ -24,7 +24,6 @@
#include "job_manager.h"
#include "json_server.h"
#include "transcode_job.h"
-#include "util.h"
#include <dcp/raw_convert.h>
#include <boost/asio.hpp>
#include <boost/bind/bind.hpp>
@@ -152,6 +151,53 @@ JSONServer::handle (shared_ptr<tcp::socket> socket)
}
+map<string, string>
+split_get_request(string url)
+{
+ enum {
+ AWAITING_QUESTION_MARK,
+ KEY,
+ VALUE
+ } state = AWAITING_QUESTION_MARK;
+
+ map<string, string> r;
+ string k;
+ string v;
+ for (size_t i = 0; i < url.length(); ++i) {
+ switch (state) {
+ case AWAITING_QUESTION_MARK:
+ if (url[i] == '?') {
+ state = KEY;
+ }
+ break;
+ case KEY:
+ if (url[i] == '=') {
+ v.clear();
+ state = VALUE;
+ } else {
+ k += url[i];
+ }
+ break;
+ case VALUE:
+ if (url[i] == '&') {
+ r.insert(make_pair(k, v));
+ k.clear ();
+ state = KEY;
+ } else {
+ v += url[i];
+ }
+ break;
+ }
+ }
+
+ if (state == VALUE) {
+ r.insert (make_pair (k, v));
+ }
+
+ return r;
+}
+
+
void
JSONServer::request (string url, shared_ptr<tcp::socket> socket)
{