*/
-#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;
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);
}
}
+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)
{