From d544a5a6d05a0fb3494ba063ea685b740825aa86 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Sun, 16 Apr 2017 12:50:32 +0300 Subject: Add supoort for task response result url value --- bbot/manifest | 2 +- bbot/manifest.cxx | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) (limited to 'bbot') diff --git a/bbot/manifest b/bbot/manifest index 218282f..44e2662 100644 --- a/bbot/manifest +++ b/bbot/manifest @@ -131,7 +131,7 @@ namespace bbot // std::string session; - // Challenge and task are absent if session is empty. + // Challenge, result url and task are absent if session is empty. // butl::optional challenge; butl::optional result_url; diff --git a/bbot/manifest.cxx b/bbot/manifest.cxx index 35e472c..b183596 100644 --- a/bbot/manifest.cxx +++ b/bbot/manifest.cxx @@ -538,6 +538,16 @@ namespace bbot challenge = move (v); } + else if (n == "result-url") + { + if (result_url) + bad_name ("task response result url redefinition"); + + if (v.empty ()) + bad_value ("empty task response result url"); + + result_url = move (v); + } else if (!iu) bad_name ("unknown name '" + n + "' in task response manifest"); } @@ -550,16 +560,25 @@ namespace bbot session = move (*sess); - // If session is not empty then the challenge must present, otherwise it - // shouldn't. + // If session is not empty then the challenge and the result url must + // present, otherwise they shouldn't. // if (!session.empty ()) { if (!challenge) bad_value ("no task response challenge specified"); + + if (!result_url) + bad_value ("no task response result url specified"); + } + else + { + if (challenge) + bad_value ("unexpected task response challenge"); + + if (result_url) + bad_value ("unexpected task response result url"); } - else if (challenge) - bad_value ("unexpected task response challenge"); // If session is not empty then the task manifest must follow, otherwise it // shouldn't. @@ -595,6 +614,9 @@ namespace bbot if (challenge) s.next ("challenge", *challenge); + if (result_url) + s.next ("result-url", *result_url); + s.next ("", ""); // End of manifest. if (task) -- cgit v1.1