aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-01-26 22:48:18 +0100
committerJay Berkenbilt <ejb@ql.org>2022-01-30 19:11:03 +0100
commit9013b7ca919c13b03488056dff55ffbf5215f008 (patch)
treeb3115571daa56be175614e8d92b7c778b11d6b14 /libqpdf
parentedef2cd330d0f4ca77f75e7192628a64bf67de3e (diff)
downloadqpdf-9013b7ca919c13b03488056dff55ffbf5215f008.tar.zst
QPDFJob: move placeholder json to a separate source file
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFJob.cc8
-rw-r--r--libqpdf/QPDFJob_argv.cc97
-rw-r--r--libqpdf/QPDFJob_json.cc99
-rw-r--r--libqpdf/build.mk1
4 files changed, 109 insertions, 96 deletions
diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc
index d1706185..b0143449 100644
--- a/libqpdf/QPDFJob.cc
+++ b/libqpdf/QPDFJob.cc
@@ -33,6 +33,8 @@
#include <qpdf/QPDFWriter.hh>
#include <qpdf/QIntC.hh>
+#include <qpdf/auto_job_schema.hh> // JOB_SCHEMA_DATA
+
QPDFJob::ConfigError::ConfigError(std::string const& msg) :
std::runtime_error(msg)
{
@@ -478,6 +480,12 @@ QPDFJob::config()
return std::shared_ptr<Config>(new Config(*this));
}
+std::string
+QPDFJob::json_job_schema_v1()
+{
+ return JOB_SCHEMA_DATA;
+}
+
void
QPDFJob::parseRotationParameter(std::string const& parameter)
{
diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc
index cca3abca..f4c15e31 100644
--- a/libqpdf/QPDFJob_argv.cc
+++ b/libqpdf/QPDFJob_argv.cc
@@ -16,10 +16,6 @@
#include <qpdf/QPDFArgParser.hh>
#include <qpdf/QPDFJob.hh>
#include <qpdf/QIntC.hh>
-#include <qpdf/JSONHandler.hh>
-
-#include <qpdf/auto_job_schema.hh>
-static JSON JOB_SCHEMA = JSON::parse(JOB_SCHEMA_DATA);
namespace
{
@@ -468,7 +464,7 @@ ArgParser::argEndCopyAttachment()
void
ArgParser::argJobJsonHelp()
{
- std::cout << JOB_SCHEMA_DATA << std::endl;
+ std::cout << QPDFJob::json_job_schema_v1() << std::endl;
}
void
@@ -504,94 +500,3 @@ QPDFJob::initializeFromArgv(int argc, char* argv[], char const* progname_env)
QPDFArgParser::bindBare(&QPDFJob::checkConfiguration, this));
ap.parseOptions();
}
-
-void
-QPDFJob::initializeFromJson(std::string const& json)
-{
- std::list<std::string> errors;
- JSON j = JSON::parse(json);
- if (! j.checkSchema(JOB_SCHEMA, JSON::f_optional, errors))
- {
- std::ostringstream msg;
- msg << this->m->message_prefix
- << ": job json has errors:";
- for (auto const& error: errors)
- {
- msg << std::endl << " " << error;
- }
- throw std::runtime_error(msg.str());
- }
-
- JSONHandler jh;
- {
- jh.addDictHandlers(
- [](std::string const&){},
- [](std::string const&){});
-
- auto input = std::make_shared<JSONHandler>();
- auto input_file = std::make_shared<JSONHandler>();
- auto input_file_name = std::make_shared<JSONHandler>();
- auto output = std::make_shared<JSONHandler>();
- auto output_file = std::make_shared<JSONHandler>();
- auto output_file_name = std::make_shared<JSONHandler>();
- auto output_options = std::make_shared<JSONHandler>();
- auto output_options_qdf = std::make_shared<JSONHandler>();
-
- input->addDictHandlers(
- [](std::string const&){},
- [](std::string const&){});
- input_file->addDictHandlers(
- [](std::string const&){},
- [](std::string const&){});
- output->addDictHandlers(
- [](std::string const&){},
- [](std::string const&){});
- output_file->addDictHandlers(
- [](std::string const&){},
- [](std::string const&){});
- output_options->addDictHandlers(
- [](std::string const&){},
- [](std::string const&){});
-
- jh.addDictKeyHandler("input", input);
- input->addDictKeyHandler("file", input_file);
- input_file->addDictKeyHandler("name", input_file_name);
- jh.addDictKeyHandler("output", output);
- output->addDictKeyHandler("file", output_file);
- output_file->addDictKeyHandler("name", output_file_name);
- output->addDictKeyHandler("options", output_options);
- output_options->addDictKeyHandler("qdf", output_options_qdf);
-
- input_file_name->addStringHandler(
- [this](std::string const&, std::string const& v) {
- config()->inputFile(v.c_str());
- });
- output_file_name->addStringHandler(
- [this](std::string const&, std::string const& v) {
- config()->outputFile(v.c_str());
- });
- output_options_qdf->addBoolHandler(
- [this](std::string const&, bool v) {
- // QXXXQ require v to be true
- config()->qdf();
- });
- }
-
- // {
- // "input": {
- // "file": {
- // "name": "/home/ejb/source/examples/pdf/minimal.pdf"
- // }
- // },
- // "output": {
- // "file": {
- // "name": "/tmp/a.pdf"
- // },
- // "options": {
- // "qdf": true
- // }
- // }
- // }
-
- jh.handle(".", j);
-}
diff --git a/libqpdf/QPDFJob_json.cc b/libqpdf/QPDFJob_json.cc
new file mode 100644
index 00000000..74fd27bd
--- /dev/null
+++ b/libqpdf/QPDFJob_json.cc
@@ -0,0 +1,99 @@
+#include <qpdf/QPDFJob.hh>
+#include <qpdf/JSONHandler.hh>
+
+#include <memory>
+#include <stdexcept>
+#include <sstream>
+
+static JSON JOB_SCHEMA = JSON::parse(QPDFJob::json_job_schema_v1().c_str());
+
+void
+QPDFJob::initializeFromJson(std::string const& json)
+{
+ std::list<std::string> errors;
+ JSON j = JSON::parse(json);
+ if (! j.checkSchema(JOB_SCHEMA, JSON::f_optional, errors))
+ {
+ std::ostringstream msg;
+ msg << this->m->message_prefix
+ << ": job json has errors:";
+ for (auto const& error: errors)
+ {
+ msg << std::endl << " " << error;
+ }
+ throw std::runtime_error(msg.str());
+ }
+
+ JSONHandler jh;
+ {
+ jh.addDictHandlers(
+ [](std::string const&){},
+ [](std::string const&){});
+
+ auto input = std::make_shared<JSONHandler>();
+ auto input_file = std::make_shared<JSONHandler>();
+ auto input_file_name = std::make_shared<JSONHandler>();
+ auto output = std::make_shared<JSONHandler>();
+ auto output_file = std::make_shared<JSONHandler>();
+ auto output_file_name = std::make_shared<JSONHandler>();
+ auto output_options = std::make_shared<JSONHandler>();
+ auto output_options_qdf = std::make_shared<JSONHandler>();
+
+ input->addDictHandlers(
+ [](std::string const&){},
+ [](std::string const&){});
+ input_file->addDictHandlers(
+ [](std::string const&){},
+ [](std::string const&){});
+ output->addDictHandlers(
+ [](std::string const&){},
+ [](std::string const&){});
+ output_file->addDictHandlers(
+ [](std::string const&){},
+ [](std::string const&){});
+ output_options->addDictHandlers(
+ [](std::string const&){},
+ [](std::string const&){});
+
+ jh.addDictKeyHandler("input", input);
+ input->addDictKeyHandler("file", input_file);
+ input_file->addDictKeyHandler("name", input_file_name);
+ jh.addDictKeyHandler("output", output);
+ output->addDictKeyHandler("file", output_file);
+ output_file->addDictKeyHandler("name", output_file_name);
+ output->addDictKeyHandler("options", output_options);
+ output_options->addDictKeyHandler("qdf", output_options_qdf);
+
+ input_file_name->addStringHandler(
+ [this](std::string const&, std::string const& v) {
+ config()->inputFile(v.c_str());
+ });
+ output_file_name->addStringHandler(
+ [this](std::string const&, std::string const& v) {
+ config()->outputFile(v.c_str());
+ });
+ output_options_qdf->addBoolHandler(
+ [this](std::string const&, bool v) {
+ // QXXXQ require v to be true
+ config()->qdf();
+ });
+ }
+
+ // {
+ // "input": {
+ // "file": {
+ // "name": "/home/ejb/source/examples/pdf/minimal.pdf"
+ // }
+ // },
+ // "output": {
+ // "file": {
+ // "name": "/tmp/a.pdf"
+ // },
+ // "options": {
+ // "qdf": true
+ // }
+ // }
+ // }
+
+ jh.handle(".", j);
+}
diff --git a/libqpdf/build.mk b/libqpdf/build.mk
index 4cb546d8..8cedb44a 100644
--- a/libqpdf/build.mk
+++ b/libqpdf/build.mk
@@ -74,6 +74,7 @@ SRCS_libqpdf = \
libqpdf/QPDFJob.cc \
libqpdf/QPDFJob_argv.cc \
libqpdf/QPDFJob_config.cc \
+ libqpdf/QPDFJob_json.cc \
libqpdf/QPDFMatrix.cc \
libqpdf/QPDFNameTreeObjectHelper.cc \
libqpdf/QPDFNumberTreeObjectHelper.cc \