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:
@@ -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)) % '&');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user