summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-02-19 10:47:11 +0000
committerCarl Hetherington <cth@carlh.net>2014-02-19 10:47:11 +0000
commitb5b20f829ed95febe7aba55ebe3679c998b35b5e (patch)
treefa4013a9646aee272ac8e7474275e2ad07cfec3e /src/lib
parent6a15d65585af0e19b72200d1fd67e256cd1a7c6c (diff)
Add some basic JSON stuff.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/analyse_audio_job.cc6
-rw-r--r--src/lib/analyse_audio_job.h1
-rw-r--r--src/lib/examine_content_job.cc6
-rw-r--r--src/lib/examine_content_job.h1
-rw-r--r--src/lib/job.cc25
-rw-r--r--src/lib/job.h2
-rw-r--r--src/lib/scp_dcp_job.cc7
-rw-r--r--src/lib/scp_dcp_job.h1
-rw-r--r--src/lib/send_kdm_email_job.cc6
-rw-r--r--src/lib/send_kdm_email_job.h1
-rw-r--r--src/lib/transcode_job.cc6
-rw-r--r--src/lib/transcode_job.h1
-rw-r--r--src/lib/util.cc54
-rw-r--r--src/lib/util.h2
-rw-r--r--src/lib/wscript1
15 files changed, 118 insertions, 2 deletions
diff --git a/src/lib/analyse_audio_job.cc b/src/lib/analyse_audio_job.cc
index 8186f9de4..bfe0ed61f 100644
--- a/src/lib/analyse_audio_job.cc
+++ b/src/lib/analyse_audio_job.cc
@@ -48,6 +48,12 @@ AnalyseAudioJob::name () const
return _("Analyse audio");
}
+string
+AnalyseAudioJob::json_name () const
+{
+ return N_("analyse_audio");
+}
+
void
AnalyseAudioJob::run ()
{
diff --git a/src/lib/analyse_audio_job.h b/src/lib/analyse_audio_job.h
index 3d4881983..3e376634c 100644
--- a/src/lib/analyse_audio_job.h
+++ b/src/lib/analyse_audio_job.h
@@ -30,6 +30,7 @@ public:
AnalyseAudioJob (boost::shared_ptr<const Film>, boost::shared_ptr<AudioContent>);
std::string name () const;
+ std::string json_name () const;
void run ();
private:
diff --git a/src/lib/examine_content_job.cc b/src/lib/examine_content_job.cc
index cbf180ffc..8f16e2e5c 100644
--- a/src/lib/examine_content_job.cc
+++ b/src/lib/examine_content_job.cc
@@ -46,6 +46,12 @@ ExamineContentJob::name () const
return _("Examine content");
}
+string
+ExamineContentJob::json_name () const
+{
+ return N_("examine_content");
+}
+
void
ExamineContentJob::run ()
{
diff --git a/src/lib/examine_content_job.h b/src/lib/examine_content_job.h
index b6903b86b..c8037224f 100644
--- a/src/lib/examine_content_job.h
+++ b/src/lib/examine_content_job.h
@@ -30,6 +30,7 @@ public:
~ExamineContentJob ();
std::string name () const;
+ std::string json_name () const;
void run ();
private:
diff --git a/src/lib/job.cc b/src/lib/job.cc
index 66fa3755d..76976df32 100644
--- a/src/lib/job.cc
+++ b/src/lib/job.cc
@@ -239,7 +239,7 @@ Job::set_progress (float p, bool force)
}
}
-/** @return fractional progress of this sub-job, or -1 if not known */
+/** @return fractional progress of the current sub-job, or -1 if not known */
float
Job::progress () const
{
@@ -325,6 +325,29 @@ Job::status () const
return s.str ();
}
+string
+Job::json_status () const
+{
+ boost::mutex::scoped_lock lm (_state_mutex);
+
+ switch (_state) {
+ case NEW:
+ return N_("new");
+ case RUNNING:
+ return N_("running");
+ case PAUSED:
+ return N_("paused");
+ case FINISHED_OK:
+ return N_("finished_ok");
+ case FINISHED_ERROR:
+ return N_("finished_error");
+ case FINISHED_CANCELLED:
+ return N_("finished_cancelled");
+ }
+
+ return "";
+}
+
/** @return An estimate of the remaining time for this sub-job, in seconds */
int
Job::remaining_time () const
diff --git a/src/lib/job.h b/src/lib/job.h
index 6310da32a..489464558 100644
--- a/src/lib/job.h
+++ b/src/lib/job.h
@@ -43,6 +43,7 @@ public:
/** @return user-readable name of this job */
virtual std::string name () const = 0;
+ virtual std::string json_name () const = 0;
/** Run this job in the current thread. */
virtual void run () = 0;
@@ -64,6 +65,7 @@ public:
int elapsed_time () const;
virtual std::string status () const;
+ std::string json_status () const;
std::string sub_name () const {
return _sub_name;
}
diff --git a/src/lib/scp_dcp_job.cc b/src/lib/scp_dcp_job.cc
index 22715978a..0b713b042 100644
--- a/src/lib/scp_dcp_job.cc
+++ b/src/lib/scp_dcp_job.cc
@@ -110,6 +110,12 @@ SCPDCPJob::name () const
return _("Copy DCP to TMS");
}
+string
+SCPDCPJob::json_name () const
+{
+ return N_("scp_dcp");
+}
+
void
SCPDCPJob::run ()
{
@@ -223,4 +229,3 @@ SCPDCPJob::set_status (string s)
boost::mutex::scoped_lock lm (_status_mutex);
_status = s;
}
-
diff --git a/src/lib/scp_dcp_job.h b/src/lib/scp_dcp_job.h
index bdc83af18..e3960d73b 100644
--- a/src/lib/scp_dcp_job.h
+++ b/src/lib/scp_dcp_job.h
@@ -29,6 +29,7 @@ public:
SCPDCPJob (boost::shared_ptr<const Film>);
std::string name () const;
+ std::string json_name () const;
void run ();
std::string status () const;
diff --git a/src/lib/send_kdm_email_job.cc b/src/lib/send_kdm_email_job.cc
index 89bce9a14..8af0b556a 100644
--- a/src/lib/send_kdm_email_job.cc
+++ b/src/lib/send_kdm_email_job.cc
@@ -50,6 +50,12 @@ SendKDMEmailJob::name () const
return String::compose (_("Email KDMs for %1"), _film->name());
}
+string
+SendKDMEmailJob::json_name () const
+{
+ return N_("send_kdm_email");
+}
+
void
SendKDMEmailJob::run ()
{
diff --git a/src/lib/send_kdm_email_job.h b/src/lib/send_kdm_email_job.h
index fcab56ce5..f4d154a91 100644
--- a/src/lib/send_kdm_email_job.h
+++ b/src/lib/send_kdm_email_job.h
@@ -34,6 +34,7 @@ public:
);
std::string name () const;
+ std::string json_name () const;
void run ();
private:
diff --git a/src/lib/transcode_job.cc b/src/lib/transcode_job.cc
index 5c195ee1b..7b304cb35 100644
--- a/src/lib/transcode_job.cc
+++ b/src/lib/transcode_job.cc
@@ -50,6 +50,12 @@ TranscodeJob::name () const
return String::compose (_("Transcode %1"), _film->name());
}
+string
+TranscodeJob::json_name () const
+{
+ return N_("transcode");
+}
+
void
TranscodeJob::run ()
{
diff --git a/src/lib/transcode_job.h b/src/lib/transcode_job.h
index 9128206d2..6e3c1ead9 100644
--- a/src/lib/transcode_job.h
+++ b/src/lib/transcode_job.h
@@ -35,6 +35,7 @@ public:
TranscodeJob (boost::shared_ptr<const Film> f);
std::string name () const;
+ std::string json_name () const;
void run ();
std::string status () const;
diff --git a/src/lib/util.cc b/src/lib/util.cc
index b2f8c4470..a86033e57 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -89,6 +89,7 @@ using std::min;
using std::max;
using std::list;
using std::multimap;
+using std::map;
using std::istream;
using std::numeric_limits;
using std::pair;
@@ -939,6 +940,52 @@ make_signer ()
return shared_ptr<const libdcp::Signer> (new libdcp::Signer (chain, signer_key));
}
+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;
+}
+
libdcp::Size
fit_ratio_within (float ratio, libdcp::Size full_frame)
{
@@ -959,3 +1006,10 @@ wrapped_av_malloc (size_t s)
return p;
}
+string
+entities_to_text (string e)
+{
+ boost::algorithm::replace_all (e, "%3A", ":");
+ boost::algorithm::replace_all (e, "%2F", "/");
+ return e;
+}
diff --git a/src/lib/util.h b/src/lib/util.h
index a229bbfc9..9bf139b82 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -78,6 +78,8 @@ extern boost::filesystem::path mo_path ();
extern std::string tidy_for_filename (std::string);
extern boost::shared_ptr<const libdcp::Signer> make_signer ();
extern libdcp::Size fit_ratio_within (float ratio, libdcp::Size);
+extern std::string entities_to_text (std::string e);
+extern std::map<std::string, std::string> split_get_request (std::string url);
struct FrameRateConversion
{
diff --git a/src/lib/wscript b/src/lib/wscript
index 4921afaee..8702adebb 100644
--- a/src/lib/wscript
+++ b/src/lib/wscript
@@ -37,6 +37,7 @@ sources = """
job.cc
job_manager.cc
kdm.cc
+ json_server.cc
log.cc
player.cc
playlist.cc