aboutsummaryrefslogtreecommitdiff
path: root/mod/mod-ci-github-gh.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2024-11-27 11:50:58 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2024-12-10 16:44:55 +0200
commit1d0a198748c0e4aa1ce22ab2989a2b734f7d8948 (patch)
tree2c4b596214e19219ee570a04c8a412922caf0ea7 /mod/mod-ci-github-gh.cxx
parentf5768fee9d0977a42f344cf0cfdae74ca80a23b9 (diff)
Ensure all exceptions are handled in build_*() notifications
Diffstat (limited to 'mod/mod-ci-github-gh.cxx')
-rw-r--r--mod/mod-ci-github-gh.cxx48
1 files changed, 16 insertions, 32 deletions
diff --git a/mod/mod-ci-github-gh.cxx b/mod/mod-ci-github-gh.cxx
index a1e4d53..fc5cf82 100644
--- a/mod/mod-ci-github-gh.cxx
+++ b/mod/mod-ci-github-gh.cxx
@@ -19,7 +19,7 @@ namespace brep
// Return the GitHub check run status corresponding to a build_state.
//
string
- gh_to_status (build_state st) noexcept
+ gh_to_status (build_state st)
{
// Just return by value (small string optimization).
//
@@ -484,10 +484,6 @@ namespace brep
return p.name () == s ? (v = true) : false;
};
- // Pass true to gh_check_run() to indicate that the we're parsing a
- // webhook event or REST API response (in which case more fields are
- // expected to be present than in a GraphQL response).
- //
if (c (ac, "action")) action = p.next_expect_string ();
else if (c (cs, "check_run")) check_run = gh_check_run_ex (p);
else if (c (rp, "repository")) repository = gh_repository (p);
@@ -597,6 +593,14 @@ namespace brep
"invalid IAT expires_at value '" + v +
"': " + e.what ());
}
+ catch (const system_error& e)
+ {
+ // Translate for simplicity.
+ //
+ throw_json (p,
+ "unable to convert IAT expires_at value '" + v +
+ "': " + e.what ());
+ }
}
else p.next_expect_value_skip ();
}
@@ -623,37 +627,17 @@ namespace brep
string
gh_to_iso8601 (timestamp t)
{
- try
- {
- return butl::to_string (t,
- "%Y-%m-%dT%TZ",
- false /* special */,
- false /* local */);
- }
- catch (const system_error& e)
- {
- throw runtime_error (
- string ("failed to convert timestamp to ISO 8601 string: ") +
- e.what ());
- }
+ return butl::to_string (t,
+ "%Y-%m-%dT%TZ",
+ false /* special */,
+ false /* local */);
}
timestamp
gh_from_iso8601 (const string& s)
{
- try
- {
- // @@ TMP butl::from_string()'s comment says it also throws
- // invalid_argument but that seems to be false.
- //
- return butl::from_string (s.c_str (),
- "%Y-%m-%dT%TZ",
- false /* local */);
- }
- catch (const system_error& e)
- {
- throw invalid_argument ("invalid ISO 8601 timestamp value '" + s +
- "': " + e.what ());
- }
+ return butl::from_string (s.c_str (),
+ "%Y-%m-%dT%TZ",
+ false /* local */);
}
}