Added output format parser to the Route service.
It is possible now to choose between json and flatbuffers (not yet implemented) output format. Only route service is supported atm.
This commit is contained in:
parent
88979d0d86
commit
59ca7840f4
@ -70,12 +70,19 @@ struct BaseParameters
|
||||
Any
|
||||
};
|
||||
|
||||
enum class OutputFormatType
|
||||
{
|
||||
JSON,
|
||||
FLATBUFFERS
|
||||
};
|
||||
|
||||
std::vector<util::Coordinate> coordinates;
|
||||
std::vector<boost::optional<Hint>> hints;
|
||||
std::vector<boost::optional<double>> radiuses;
|
||||
std::vector<boost::optional<Bearing>> bearings;
|
||||
std::vector<boost::optional<Approach>> approaches;
|
||||
std::vector<std::string> exclude;
|
||||
boost::optional<OutputFormatType> format = OutputFormatType::JSON;
|
||||
|
||||
// Adds hints to response which can be included in subsequent requests, see `hints` above.
|
||||
bool generate_hints = true;
|
||||
|
@ -169,6 +169,11 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar<Iterator, Signature>
|
||||
qi::lit("snapping=") >
|
||||
snapping_type[ph::bind(&engine::api::BaseParameters::snapping, qi::_r1) = qi::_1];
|
||||
|
||||
format_type.add(".json", engine::api::BaseParameters::OutputFormatType::JSON)
|
||||
(".flatbuffers", engine::api::BaseParameters::OutputFormatType::FLATBUFFERS);
|
||||
|
||||
format_rule = -format_type[ph::bind(&engine::api::BaseParameters::format, qi::_r1) = qi::_1];
|
||||
|
||||
exclude_rule = qi::lit("exclude=") >
|
||||
(qi::as_string[+qi::char_("a-zA-Z0-9")] %
|
||||
',')[ph::bind(&engine::api::BaseParameters::exclude, qi::_r1) = qi::_1];
|
||||
@ -185,6 +190,9 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar<Iterator, Signature>
|
||||
protected:
|
||||
qi::rule<Iterator, Signature> base_rule;
|
||||
qi::rule<Iterator, Signature> query_rule;
|
||||
qi::rule<Iterator, Signature> format_rule;
|
||||
|
||||
qi::symbols<char, engine::api::BaseParameters::OutputFormatType> format_type;
|
||||
|
||||
qi::real_parser<double, json_policy> double_;
|
||||
|
||||
|
@ -42,7 +42,7 @@ struct RouteParametersGrammar : public BaseParametersGrammar<Iterator, Signature
|
||||
qi::bool_[ph::bind(&engine::api::RouteParameters::continue_straight, qi::_r1) =
|
||||
qi::_1]));
|
||||
|
||||
root_rule = query_rule(qi::_r1) > -qi::lit(".json") >
|
||||
root_rule = query_rule(qi::_r1) > BaseGrammar::format_rule(qi::_r1) >
|
||||
-('?' > (route_rule(qi::_r1) | base_rule(qi::_r1)) % '&');
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user