8#include <userver/utils/time_of_day.hpp>
10#include <userver/formats/common/meta.hpp>
11#include <userver/formats/parse/to.hpp>
13USERVER_NAMESPACE_BEGIN
15namespace formats::
parse {
17template <
typename Value,
typename Duration>
18std::enable_if_t<common::kIsFormatValue<Value>, utils::datetime::TimeOfDay<Duration>>
19Parse(
const Value& value, To<utils::datetime::TimeOfDay<Duration>>) {
20 std::optional<std::string> str;
22 str = value.
template As<std::string>();
23 return utils::datetime::TimeOfDay<Duration>{*str};
24 }
catch (
const std::exception& e) {
26 throw typename Value::ParseException(
"'" + *str +
"' cannot be parsed to `utils::datetime::TimeOfDay`");
28 throw typename Value::ParseException(
"Only strings can be parsed as `utils::datetime::TimeOfDay`");