diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-12-10 01:08:56 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-12-10 01:16:06 +0100 |
| commit | 02b74112721d13a27b0bbaece714d5c8ea743d43 (patch) | |
| tree | 3a27196ba8c53b603e0d3369593858e471a071f8 /src/lib/json_server.cc | |
| parent | 11afb1f4bb9c8dd2e366ed216dd324d197d18b9a (diff) | |
Move some methods out of util.{cc,h}
Diffstat (limited to 'src/lib/json_server.cc')
| -rw-r--r-- | src/lib/json_server.cc | 48 |
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) { |
