diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2018-07-20 22:48:34 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-07-25 20:32:30 +0300 |
commit | 7407647bf6c73c1b128749ed788d53b5f174b4be (patch) | |
tree | c2ea4b5f745baa86b4ed414d21778f6ddfefa4c1 | |
parent | 8c0326c9433d47dfbeab8d1514512de1160d5792 (diff) |
Add support for submission simulating
-rw-r--r-- | mod/mod-submit.cxx | 20 | ||||
-rw-r--r-- | mod/options.cli | 13 |
2 files changed, 19 insertions, 14 deletions
diff --git a/mod/mod-submit.cxx b/mod/mod-submit.cxx index ff5fa9d..6dbb4ec 100644 --- a/mod/mod-submit.cxx +++ b/mod/mod-submit.cxx @@ -527,24 +527,20 @@ handle (request& rq, response& rs) parser p (is, "handler"); manifest_name_value nv (p.next ()); - auto bad_name ([&p, &nv] (const string& d) { - throw parsing (p.name (), nv.name_line, nv.name_column, d);}); - auto bad_value ([&p, &nv] (const string& d) { throw parsing (p.name (), nv.value_line, nv.value_column, d);}); + if (nv.empty ()) + bad_value ("empty manifest"); + const string& n (nv.name); const string& v (nv.value); - // Make sure this is the start and we support the version. + // The format version pair is verified by the parser. // - if (!n.empty ()) - bad_name ("start of manifest expected"); - - if (v != "1") - bad_value ("unsupported format version"); + assert (n.empty () && v == "1"); - // Cache start of manifest. + // Cache the format version pair. // rvs.push_back (move (nv)); @@ -656,7 +652,7 @@ handle (request& rq, response& rs) return respond_error (); } - // Send email, if configured. + // Send email, if configured, and the submission is not simulated. // // Note that we don't consider the email sending failure to be a submission // failure as the submission data is successfully persisted and the handler @@ -666,7 +662,7 @@ handle (request& rq, response& rs) // web server error log is monitored and the email sending failure will be // noticed. // - if (options_->submit_email_specified ()) + if (options_->submit_email_specified () && !params.simulate ()) try { // Redirect the diagnostics to the web server error log. diff --git a/mod/options.cli b/mod/options.cli index 62a339d..66f19b1 100644 --- a/mod/options.cli +++ b/mod/options.cli @@ -623,8 +623,8 @@ namespace brep string result | rs = "*"; }; - // Parameters must either be all present (actual submission) or absent - // (submission form request). + // Parameters, except simulate, must either be all present (actual + // submission) or absent (submission form request). // // Note also that besides these parameters there can be others. We don't // recognize their semantics and just save them to the submission request @@ -642,6 +642,15 @@ namespace brep // Package archive file SHA256 checksum. // string sha256sum; + + // Simulate submission. Tells the submission handler not to publish the + // package but to respond as if it does. + // + // Note that the package submission email (see submit-email + // configuration option for details) is not sent for the simulated + // submission. + // + bool simulate; }; } } |