Fix some typos in comments.
[dcpomatic.git] / src / lib / json_server.cc
index dd56b3124fea46550a2921ea96e813dd4a71f213..92d5c117152f837e4ba11624426f8c89cecd942d 100644 (file)
 */
 
 
-#include "json_server.h"
-#include "job_manager.h"
-#include "job.h"
-#include "util.h"
 #include "film.h"
+#include "job.h"
+#include "job_manager.h"
+#include "json_server.h"
 #include "transcode_job.h"
 #include <dcp/raw_convert.h>
 #include <boost/asio.hpp>
 #include <iostream>
 
 
-using std::string;
 using std::cout;
-using std::map;
+using std::dynamic_pointer_cast;
 using std::list;
-using boost::thread;
+using std::make_shared;
+using std::map;
 using std::shared_ptr;
-using std::dynamic_pointer_cast;
+using std::string;
 using boost::asio::ip::tcp;
+using boost::thread;
 using dcp::raw_convert;
 
 
@@ -74,7 +74,7 @@ try
        tcp::acceptor a (io_service, tcp::endpoint (tcp::v4 (), port));
        while (true) {
                try {
-                       shared_ptr<tcp::socket> s (new tcp::socket (io_service));
+                       auto s = make_shared<tcp::socket>(io_service);
                        a.accept (*s);
                        handle (s);
                }
@@ -151,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)
 {