X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fjson_server.cc;fp=src%2Flib%2Fjson_server.cc;h=92d5c117152f837e4ba11624426f8c89cecd942d;hp=8c626ad1f0e2186d48d205f050dfececbf6de0bc;hb=02b74112721d13a27b0bbaece714d5c8ea743d43;hpb=11afb1f4bb9c8dd2e366ed216dd324d197d18b9a 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 #include #include @@ -152,6 +151,53 @@ JSONServer::handle (shared_ptr socket) } +map +split_get_request(string url) +{ + enum { + AWAITING_QUESTION_MARK, + KEY, + VALUE + } state = AWAITING_QUESTION_MARK; + + map 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 socket) {