diff --git a/include/cgimap/api06/changeset_download_handler.hpp b/include/cgimap/api06/changeset_download_handler.hpp index 474c4472..536db4cc 100644 --- a/include/cgimap/api06/changeset_download_handler.hpp +++ b/include/cgimap/api06/changeset_download_handler.hpp @@ -20,9 +20,6 @@ namespace api06 { class changeset_download_responder : public osmchange_responder { public: changeset_download_responder(mime::type, osm_changeset_id_t, data_selection &); - -private: - osm_changeset_id_t id; }; class changeset_download_handler : public handler { diff --git a/include/cgimap/api06/changeset_handler.hpp b/include/cgimap/api06/changeset_handler.hpp index 13230fec..97f8d7c5 100644 --- a/include/cgimap/api06/changeset_handler.hpp +++ b/include/cgimap/api06/changeset_handler.hpp @@ -20,10 +20,6 @@ namespace api06 { class changeset_responder : public osm_current_responder { public: changeset_responder(mime::type, osm_changeset_id_t, bool, data_selection &); - -private: - osm_changeset_id_t id; - bool include_discussion; }; class changeset_handler : public handler { diff --git a/include/cgimap/api06/changeset_update_handler.hpp b/include/cgimap/api06/changeset_update_handler.hpp index 1620178d..4f771776 100644 --- a/include/cgimap/api06/changeset_update_handler.hpp +++ b/include/cgimap/api06/changeset_update_handler.hpp @@ -26,9 +26,6 @@ class changeset_update_responder : public text_responder { osm_changeset_id_t id_, const std::string & payload, std::optional user_id); - -private: - osm_changeset_id_t id; }; class changeset_update_sel_responder : public osm_current_responder { @@ -36,11 +33,8 @@ class changeset_update_sel_responder : public osm_current_responder { changeset_update_sel_responder(mime::type, data_selection & sel, osm_changeset_id_t id_); - private: data_selection& sel; - osm_changeset_id_t id; - bool include_discussion; }; class changeset_update_handler : public payload_enabled_handler { diff --git a/include/cgimap/api06/node_handler.hpp b/include/cgimap/api06/node_handler.hpp index 088a482b..4bc13422 100644 --- a/include/cgimap/api06/node_handler.hpp +++ b/include/cgimap/api06/node_handler.hpp @@ -22,9 +22,7 @@ class node_responder : public osm_current_responder { node_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - void check_visibility(); + void check_visibility(osm_nwr_id_t); }; class node_handler : public handler { diff --git a/include/cgimap/api06/node_history_handler.hpp b/include/cgimap/api06/node_history_handler.hpp index 8f3b8138..c7210eff 100644 --- a/include/cgimap/api06/node_history_handler.hpp +++ b/include/cgimap/api06/node_history_handler.hpp @@ -19,9 +19,6 @@ namespace api06 { class node_history_responder : public osm_current_responder { public: node_history_responder(mime::type, osm_nwr_id_t, data_selection &); - -private: - osm_nwr_id_t id; }; class node_history_handler : public handler { diff --git a/include/cgimap/api06/node_relations_handler.hpp b/include/cgimap/api06/node_relations_handler.hpp index 9bcd5332..bdac817c 100644 --- a/include/cgimap/api06/node_relations_handler.hpp +++ b/include/cgimap/api06/node_relations_handler.hpp @@ -22,9 +22,7 @@ class node_relations_responder : public osm_current_responder { node_relations_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - bool is_visible(); + bool is_visible(osm_nwr_id_t); }; class node_relations_handler : public handler { diff --git a/include/cgimap/api06/node_version_handler.hpp b/include/cgimap/api06/node_version_handler.hpp index c2502dd6..0968b378 100644 --- a/include/cgimap/api06/node_version_handler.hpp +++ b/include/cgimap/api06/node_version_handler.hpp @@ -20,10 +20,6 @@ namespace api06 { class node_version_responder : public osm_current_responder { public: node_version_responder(mime::type, osm_nwr_id_t, osm_version_t, data_selection &); - -private: - osm_nwr_id_t id; - osm_nwr_id_t v; }; class node_version_handler : public handler { diff --git a/include/cgimap/api06/node_ways_handler.hpp b/include/cgimap/api06/node_ways_handler.hpp index 76addbe1..f01aeb97 100644 --- a/include/cgimap/api06/node_ways_handler.hpp +++ b/include/cgimap/api06/node_ways_handler.hpp @@ -22,9 +22,7 @@ class node_ways_responder : public osm_current_responder { node_ways_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - bool is_visible(); + bool is_visible(osm_nwr_id_t); }; class node_ways_handler : public handler { diff --git a/include/cgimap/api06/nodes_handler.hpp b/include/cgimap/api06/nodes_handler.hpp index a426f661..e86449a9 100644 --- a/include/cgimap/api06/nodes_handler.hpp +++ b/include/cgimap/api06/nodes_handler.hpp @@ -22,10 +22,7 @@ namespace api06 { class nodes_responder : public osm_current_responder { public: - nodes_responder(mime::type, std::vector, data_selection &); - -private: - std::vector ids; + nodes_responder(mime::type, const std::vector&, data_selection &); }; class nodes_handler : public handler { diff --git a/include/cgimap/api06/relation_full_handler.hpp b/include/cgimap/api06/relation_full_handler.hpp index f9fb2647..223ba6fd 100644 --- a/include/cgimap/api06/relation_full_handler.hpp +++ b/include/cgimap/api06/relation_full_handler.hpp @@ -22,9 +22,7 @@ class relation_full_responder : public osm_current_responder { relation_full_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - void check_visibility(); + void check_visibility(osm_nwr_id_t); }; class relation_full_handler : public handler { diff --git a/include/cgimap/api06/relation_handler.hpp b/include/cgimap/api06/relation_handler.hpp index 1130bb57..1cf60398 100644 --- a/include/cgimap/api06/relation_handler.hpp +++ b/include/cgimap/api06/relation_handler.hpp @@ -22,9 +22,7 @@ class relation_responder : public osm_current_responder { relation_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - void check_visibility(); + void check_visibility(osm_nwr_id_t); }; class relation_handler : public handler { diff --git a/include/cgimap/api06/relation_history_handler.hpp b/include/cgimap/api06/relation_history_handler.hpp index 0dcb9635..7566a0f0 100644 --- a/include/cgimap/api06/relation_history_handler.hpp +++ b/include/cgimap/api06/relation_history_handler.hpp @@ -19,9 +19,6 @@ namespace api06 { class relation_history_responder : public osm_current_responder { public: relation_history_responder(mime::type, osm_nwr_id_t, data_selection &); - -private: - osm_nwr_id_t id; }; class relation_history_handler : public handler { diff --git a/include/cgimap/api06/relation_relations_handler.hpp b/include/cgimap/api06/relation_relations_handler.hpp index 35270ca0..f9bb87db 100644 --- a/include/cgimap/api06/relation_relations_handler.hpp +++ b/include/cgimap/api06/relation_relations_handler.hpp @@ -22,9 +22,7 @@ class relation_relations_responder : public osm_current_responder { relation_relations_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - bool is_visible(); + bool is_visible(osm_nwr_id_t); }; class relation_relations_handler : public handler { diff --git a/include/cgimap/api06/relation_version_handler.hpp b/include/cgimap/api06/relation_version_handler.hpp index a2296473..7121c2d7 100644 --- a/include/cgimap/api06/relation_version_handler.hpp +++ b/include/cgimap/api06/relation_version_handler.hpp @@ -20,12 +20,6 @@ namespace api06 { class relation_version_responder : public osm_current_responder { public: relation_version_responder(mime::type, osm_nwr_id_t, osm_version_t v, data_selection &); - -private: - osm_nwr_id_t id; - osm_version_t v; - - void check_visibility(); }; class relation_version_handler : public handler { diff --git a/include/cgimap/api06/relations_handler.hpp b/include/cgimap/api06/relations_handler.hpp index caae6399..6cffb2c0 100644 --- a/include/cgimap/api06/relations_handler.hpp +++ b/include/cgimap/api06/relations_handler.hpp @@ -23,10 +23,7 @@ namespace api06 { class relations_responder : public osm_current_responder { public: - relations_responder(mime::type, std::vector, data_selection &); - -private: - std::vector ids; + relations_responder(mime::type, const std::vector&, data_selection &); }; class relations_handler : public handler { diff --git a/include/cgimap/api06/way_full_handler.hpp b/include/cgimap/api06/way_full_handler.hpp index 8412c84d..cee95ba0 100644 --- a/include/cgimap/api06/way_full_handler.hpp +++ b/include/cgimap/api06/way_full_handler.hpp @@ -22,9 +22,7 @@ class way_full_responder : public osm_current_responder { way_full_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - void check_visibility(); + void check_visibility(osm_nwr_id_t id); }; class way_full_handler : public handler { diff --git a/include/cgimap/api06/way_handler.hpp b/include/cgimap/api06/way_handler.hpp index b4ad7e5a..86bd4246 100644 --- a/include/cgimap/api06/way_handler.hpp +++ b/include/cgimap/api06/way_handler.hpp @@ -22,9 +22,7 @@ class way_responder : public osm_current_responder { way_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - void check_visibility(); + void check_visibility(osm_nwr_id_t); }; class way_handler : public handler { diff --git a/include/cgimap/api06/way_history_handler.hpp b/include/cgimap/api06/way_history_handler.hpp index 5f6ba447..39dfc94b 100644 --- a/include/cgimap/api06/way_history_handler.hpp +++ b/include/cgimap/api06/way_history_handler.hpp @@ -19,9 +19,6 @@ namespace api06 { class way_history_responder : public osm_current_responder { public: way_history_responder(mime::type, osm_nwr_id_t, data_selection &); - -private: - osm_nwr_id_t id; }; class way_history_handler : public handler { diff --git a/include/cgimap/api06/way_relations_handler.hpp b/include/cgimap/api06/way_relations_handler.hpp index ab15d495..84839c3e 100644 --- a/include/cgimap/api06/way_relations_handler.hpp +++ b/include/cgimap/api06/way_relations_handler.hpp @@ -22,9 +22,7 @@ class way_relations_responder : public osm_current_responder { way_relations_responder(mime::type, osm_nwr_id_t, data_selection &); private: - osm_nwr_id_t id; - - bool is_visible(); + bool is_visible(osm_nwr_id_t id); }; class way_relations_handler : public handler { diff --git a/include/cgimap/api06/way_version_handler.hpp b/include/cgimap/api06/way_version_handler.hpp index 311b5eca..f0c3ce71 100644 --- a/include/cgimap/api06/way_version_handler.hpp +++ b/include/cgimap/api06/way_version_handler.hpp @@ -20,12 +20,6 @@ namespace api06 { class way_version_responder : public osm_current_responder { public: way_version_responder(mime::type, osm_nwr_id_t, osm_version_t, data_selection &); - -private: - osm_nwr_id_t id; - osm_version_t v; - - void check_visibility(); }; class way_version_handler : public handler { diff --git a/include/cgimap/api06/ways_handler.hpp b/include/cgimap/api06/ways_handler.hpp index 129eaafb..8d9af0ee 100644 --- a/include/cgimap/api06/ways_handler.hpp +++ b/include/cgimap/api06/ways_handler.hpp @@ -22,10 +22,7 @@ namespace api06 { class ways_responder : public osm_current_responder { public: - ways_responder(mime::type, std::vector, data_selection &); - -private: - std::vector ids; + ways_responder(mime::type, const std::vector&, data_selection &); }; class ways_handler : public handler { diff --git a/include/cgimap/api07/map_handler.hpp b/include/cgimap/api07/map_handler.hpp index 9e911bd5..2ff6da95 100644 --- a/include/cgimap/api07/map_handler.hpp +++ b/include/cgimap/api07/map_handler.hpp @@ -27,21 +27,18 @@ namespace api07 { class map_responder : public osm_current_responder { public: map_responder(mime::type, bbox, data_selection &); - ~map_responder(); }; class map_handler : public handler { public: explicit map_handler(request &req); map_handler(request &req, int tile_id); - ~map_handler(); std::string log_name() const override; responder_ptr_t responder(data_selection &x) const override; private: bbox bounds; - - static bbox validate_request(request &req); + bbox validate_request(request &req); }; } // namespace api07 diff --git a/src/api06/changeset_close_handler.cpp b/src/api06/changeset_close_handler.cpp index 200ba5a2..c9ce0804 100644 --- a/src/api06/changeset_close_handler.cpp +++ b/src/api06/changeset_close_handler.cpp @@ -24,26 +24,21 @@ namespace api06 { changeset_close_responder::changeset_close_responder( - mime::type mt, data_update & upd, osm_changeset_id_t id_, const std::string &payload, + mime::type mt, data_update & upd, osm_changeset_id_t changeset, const std::string &, std::optional user_id) : text_responder(mt) { - osm_changeset_id_t changeset = id_; - osm_user_id_t uid = *user_id; - - auto changeset_updater = upd.get_changeset_updater(changeset, uid); - + auto changeset_updater = upd.get_changeset_updater(changeset, *user_id); changeset_updater->api_close_changeset(); - upd.commit(); } changeset_close_handler::changeset_close_handler(request &, - osm_changeset_id_t id_) + osm_changeset_id_t id) : payload_enabled_handler(mime::text_plain, http::method::PUT | http::method::OPTIONS), - id(id_) {} + id(id) {} std::string changeset_close_handler::log_name() const { @@ -58,8 +53,7 @@ changeset_close_handler::responder(data_selection &) const { responder_ptr_t changeset_close_handler::responder( data_update & upd, const std::string &payload, std::optional user_id) const { - return responder_ptr_t( - new changeset_close_responder(mime_type, upd, id, payload, user_id)); + return std::make_unique(mime_type, upd, id, payload, user_id); } bool changeset_close_handler::requires_selection_after_update() const { diff --git a/src/api06/changeset_create_handler.cpp b/src/api06/changeset_create_handler.cpp index 158a7f87..762a138f 100644 --- a/src/api06/changeset_create_handler.cpp +++ b/src/api06/changeset_create_handler.cpp @@ -31,16 +31,11 @@ changeset_create_responder::changeset_create_responder( osm_changeset_id_t changeset = 0; - osm_user_id_t uid = *user_id; - - auto changeset_updater = upd.get_changeset_updater(changeset, uid); - + auto changeset_updater = upd.get_changeset_updater(changeset, *user_id); auto tags = ChangesetXMLParser().process_message(payload); - changeset = changeset_updater->api_create_changeset(tags); output_text = std::to_string(changeset); - upd.commit(); } @@ -60,8 +55,7 @@ changeset_create_handler::responder(data_selection &) const { responder_ptr_t changeset_create_handler::responder( data_update & upd, const std::string &payload, std::optional user_id) const { - return responder_ptr_t( - new changeset_create_responder(mime_type, upd, payload, user_id)); + return std::make_unique(mime_type, upd, payload, user_id); } bool changeset_create_handler::requires_selection_after_update() const { diff --git a/src/api06/changeset_download_handler.cpp b/src/api06/changeset_download_handler.cpp index cf9dab15..dee3d134 100644 --- a/src/api06/changeset_download_handler.cpp +++ b/src/api06/changeset_download_handler.cpp @@ -17,8 +17,8 @@ namespace api06 { changeset_download_responder::changeset_download_responder( - mime::type mt, osm_changeset_id_t id_, data_selection &w_) - : osmchange_responder(mt, w_), id(id_) { + mime::type mt, osm_changeset_id_t id, data_selection &w) + : osmchange_responder(mt, w) { if (sel.select_changesets({id}) == 0) { throw http::not_found(fmt::format("Changeset {:d} was not found.", id)); @@ -26,14 +26,14 @@ changeset_download_responder::changeset_download_responder( sel.select_historical_by_changesets({id}); } -changeset_download_handler::changeset_download_handler(request &req, osm_changeset_id_t id_) - : id(id_) { +changeset_download_handler::changeset_download_handler(request &req, osm_changeset_id_t id) + : id(id) { } std::string changeset_download_handler::log_name() const { return "changeset/download"; } responder_ptr_t changeset_download_handler::responder(data_selection &w) const { - return responder_ptr_t(new changeset_download_responder(mime_type, id, w)); + return std::make_unique(mime_type, id, w); } } // namespace api06 diff --git a/src/api06/changeset_handler.cpp b/src/api06/changeset_handler.cpp index 3eb96e50..74d6be80 100644 --- a/src/api06/changeset_handler.cpp +++ b/src/api06/changeset_handler.cpp @@ -19,11 +19,10 @@ using std::vector; namespace api06 { -changeset_responder::changeset_responder(mime::type mt, osm_changeset_id_t id_, - bool include_discussion_, - data_selection &w_) - : osm_current_responder(mt, w_), id(id_), - include_discussion(include_discussion_) { +changeset_responder::changeset_responder(mime::type mt, osm_changeset_id_t id, + bool include_discussion, + data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_changesets({id}) == 0) { throw http::not_found(fmt::format("Changeset {:d} was not found.", id)); @@ -34,26 +33,17 @@ changeset_responder::changeset_responder(mime::type mt, osm_changeset_id_t id_, } } -namespace { -// functor to use in find_if to locate the "include_discussion" header -struct discussion_header_finder { - bool operator()(const std::pair &header) const { - static const std::string target("include_discussion"); - return header.first == target; - } -}; -} -changeset_handler::changeset_handler(request &req, osm_changeset_id_t id_) - : id(id_), include_discussion(false) { - using std::vector; - using std::pair; - using std::string; +changeset_handler::changeset_handler(request &req, osm_changeset_id_t id) + : id(id), include_discussion(false) { - string decoded = http::urldecode(get_query_string(req)); - const vector > params = http::parse_params(decoded); + std::string decoded = http::urldecode(get_query_string(req)); + const auto params = http::parse_params(decoded); auto itr = - std::find_if(params.begin(), params.end(), discussion_header_finder()); + std::find_if(params.begin(), params.end(), + [](const std::pair &header) { + return (header.first == "include_discussion"); + }); include_discussion = (itr != params.end()); } @@ -62,7 +52,7 @@ changeset_handler::changeset_handler(request &req, osm_changeset_id_t id_) std::string changeset_handler::log_name() const { return "changeset"; } responder_ptr_t changeset_handler::responder(data_selection &w) const { - return responder_ptr_t(new changeset_responder(mime_type, id, include_discussion, w)); + return std::make_unique(mime_type, id, include_discussion, w); } } // namespace api06 diff --git a/src/api06/changeset_update_handler.cpp b/src/api06/changeset_update_handler.cpp index 86b25e5e..e1b4e7b2 100644 --- a/src/api06/changeset_update_handler.cpp +++ b/src/api06/changeset_update_handler.cpp @@ -29,16 +29,13 @@ namespace api06 { changeset_update_responder::changeset_update_responder( mime::type mt, - data_update & upd, + data_update &upd, osm_changeset_id_t changeset_id, const std::string &payload, std::optional user_id) - : text_responder(mt), - id(changeset_id){ + : text_responder(mt){ - osm_user_id_t uid = *user_id; - - auto changeset_updater = upd.get_changeset_updater(changeset_id, uid); + auto changeset_updater = upd.get_changeset_updater(changeset_id, *user_id); auto tags = ChangesetXMLParser().process_message(payload); @@ -49,21 +46,19 @@ changeset_update_responder::changeset_update_responder( changeset_update_sel_responder::changeset_update_sel_responder( mime::type mt, - data_selection & sel, + data_selection &sel, osm_changeset_id_t changeset_id) : osm_current_responder(mt, sel), - sel(sel), - id(changeset_id), - include_discussion(false){ + sel(sel) { sel.select_changesets({changeset_id}); } -changeset_update_handler::changeset_update_handler(request &req, osm_changeset_id_t id_) +changeset_update_handler::changeset_update_handler(request &req, osm_changeset_id_t id) : payload_enabled_handler(mime::application_xml, http::method::PUT | http::method::OPTIONS), - id(id_) {} + id(id) {} std::string changeset_update_handler::log_name() const { return (fmt::format("changeset/update {:d}", id)); @@ -71,14 +66,12 @@ std::string changeset_update_handler::log_name() const { responder_ptr_t changeset_update_handler::responder(data_selection &sel) const { - return responder_ptr_t( - new changeset_update_sel_responder(mime_type, sel, id)); + return std::make_unique(mime_type, sel, id); } responder_ptr_t changeset_update_handler::responder( data_update & upd, const std::string &payload, std::optional user_id) const { - return responder_ptr_t( - new changeset_update_responder(mime_type, upd, id, payload, user_id)); + return std::make_unique(mime_type, upd, id, payload, user_id); } bool changeset_update_handler::requires_selection_after_update() const { diff --git a/src/api06/changeset_upload_handler.cpp b/src/api06/changeset_upload_handler.cpp index 43538762..f43eea51 100644 --- a/src/api06/changeset_upload_handler.cpp +++ b/src/api06/changeset_upload_handler.cpp @@ -32,16 +32,13 @@ namespace api06 { changeset_upload_responder::changeset_upload_responder( - mime::type mt, data_update& upd, osm_changeset_id_t id_, const std::string &payload, + mime::type mt, data_update& upd, osm_changeset_id_t changeset, const std::string &payload, std::optional user_id) : osm_diffresult_responder(mt) { - osm_changeset_id_t changeset = id_; - osm_user_id_t uid = *user_id; - OSMChange_Tracking change_tracking{}; - auto changeset_updater = upd.get_changeset_updater(changeset, uid); + auto changeset_updater = upd.get_changeset_updater(changeset, *user_id); auto node_updater = upd.get_node_updater(change_tracking); auto way_updater = upd.get_way_updater(change_tracking); auto relation_updater = upd.get_relation_updater(change_tracking); @@ -61,13 +58,13 @@ changeset_upload_responder::changeset_upload_responder( if (global_settings::get_ratelimiter_upload()) { - auto max_changes = upd.get_rate_limit(uid); + auto max_changes = upd.get_rate_limit(*user_id); if (new_changes > max_changes) { logger::message( fmt::format( "Upload of {} changes by user {} in changeset {} blocked due to rate limiting, max. {} changes allowed", - new_changes, uid, changeset, max_changes)); + new_changes, *user_id, changeset, max_changes)); throw http::too_many_requests("Upload has been blocked due to rate limiting. Please try again later."); } } @@ -78,10 +75,10 @@ changeset_upload_responder::changeset_upload_responder( } changeset_upload_handler::changeset_upload_handler(request &, - osm_changeset_id_t id_) + osm_changeset_id_t id) : payload_enabled_handler(mime::unspecified_type, http::method::POST | http::method::OPTIONS), - id(id_) {} + id(id) {} std::string changeset_upload_handler::log_name() const { return (fmt::format("changeset/upload {:d}", id)); @@ -95,8 +92,7 @@ changeset_upload_handler::responder(data_selection &) const { responder_ptr_t changeset_upload_handler::responder( data_update & upd, const std::string &payload, std::optional user_id) const { - return responder_ptr_t( - new changeset_upload_responder(mime_type, upd, id, payload, user_id)); + return std::make_unique(mime_type, upd, id, payload, user_id); } bool changeset_upload_handler::requires_selection_after_update() const { diff --git a/src/api06/map_handler.cpp b/src/api06/map_handler.cpp index 8ac11b19..5c558853 100644 --- a/src/api06/map_handler.cpp +++ b/src/api06/map_handler.cpp @@ -72,14 +72,9 @@ string map_handler::log_name() const { } responder_ptr_t map_handler::responder(data_selection &x) const { - return responder_ptr_t(new map_responder(mime_type, bounds, x)); + return std::make_unique(mime_type, bounds, x); } -namespace { -bool is_bbox(const pair &p) { - return p.first == "bbox"; -} -} // anonymous namespace /** * Validates an FCGI request, returning the valid bounding box or @@ -87,9 +82,10 @@ bool is_bbox(const pair &p) { */ bbox map_handler::validate_request(request &req) { string decoded = http::urldecode(get_query_string(req)); - const vector > params = http::parse_params(decoded); + const auto params = http::parse_params(decoded); auto itr = - std::find_if(params.begin(), params.end(), is_bbox); + std::find_if(params.begin(), params.end(), + [](const pair &p) { return p.first == "bbox"; }); bbox bounds; if ((itr == params.end()) || !bounds.parse(itr->second)) { diff --git a/src/api06/node_handler.cpp b/src/api06/node_handler.cpp index d90e007b..20dc5d92 100644 --- a/src/api06/node_handler.cpp +++ b/src/api06/node_handler.cpp @@ -14,28 +14,29 @@ namespace api06 { -node_responder::node_responder(mime::type mt, osm_nwr_id_t id_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +node_responder::node_responder(mime::type mt, osm_nwr_id_t id, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_nodes({id}) == 0) { throw http::not_found(fmt::format("Node {:d} was not found.", id)); } - check_visibility(); + check_visibility(id); } -node_handler::node_handler(request &, osm_nwr_id_t id_) : id(id_) {} +void node_responder::check_visibility(osm_nwr_id_t id) { + if (sel.check_node_visibility(id) == data_selection::deleted) { + // TODO: fix error message / throw structure to emit better error message + throw http::gone(); + } +} + +node_handler::node_handler(request &, osm_nwr_id_t id) : id(id) {} std::string node_handler::log_name() const { return "node"; } responder_ptr_t node_handler::responder(data_selection &w) const { - return responder_ptr_t(new node_responder(mime_type, id, w)); + return std::make_unique(mime_type, id, w); } -void node_responder::check_visibility() { - if (sel.check_node_visibility(id) == data_selection::deleted) { - // TODO: fix error message / throw structure to emit better error message - throw http::gone(); - } -} } // namespace api06 diff --git a/src/api06/node_history_handler.cpp b/src/api06/node_history_handler.cpp index 4bbff053..a8e55c78 100644 --- a/src/api06/node_history_handler.cpp +++ b/src/api06/node_history_handler.cpp @@ -12,20 +12,20 @@ namespace api06 { -node_history_responder::node_history_responder(mime::type mt, osm_nwr_id_t id_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +node_history_responder::node_history_responder(mime::type mt, osm_nwr_id_t id, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_nodes_with_history({id}) == 0) { throw http::not_found(""); } } -node_history_handler::node_history_handler(request &, osm_nwr_id_t id_) : id(id_) {} +node_history_handler::node_history_handler(request &, osm_nwr_id_t id) : id(id) {} std::string node_history_handler::log_name() const { return "node/history"; } responder_ptr_t node_history_handler::responder(data_selection &w) const { - return responder_ptr_t(new node_history_responder(mime_type, id, w)); + return std::make_unique(mime_type, id, w); } } // namespace api06 diff --git a/src/api06/node_relations_handler.cpp b/src/api06/node_relations_handler.cpp index 779fbb58..e47c581f 100644 --- a/src/api06/node_relations_handler.cpp +++ b/src/api06/node_relations_handler.cpp @@ -12,26 +12,28 @@ namespace api06 { -node_relations_responder::node_relations_responder(mime::type mt, osm_nwr_id_t id_, - data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +node_relations_responder::node_relations_responder(mime::type mt, osm_nwr_id_t id, + data_selection &w) + : osm_current_responder(mt, w) { - if (sel.select_nodes({id}) > 0 && is_visible()) { + if (sel.select_nodes({id}) > 0 && is_visible(id)) { sel.select_relations_from_nodes(); } sel.drop_nodes(); } -node_relations_handler::node_relations_handler(request &, osm_nwr_id_t id_) : id(id_) {} +bool node_relations_responder::is_visible(osm_nwr_id_t id) { + return (!(sel.check_node_visibility(id) == data_selection::deleted)); +} + +node_relations_handler::node_relations_handler(request &, osm_nwr_id_t id) : id(id) {} std::string node_relations_handler::log_name() const { return "node/relations"; } responder_ptr_t node_relations_handler::responder(data_selection &x) const { - return responder_ptr_t(new node_relations_responder(mime_type, id, x)); + return std::make_unique(mime_type, id, x); } -bool node_relations_responder::is_visible() { - return (!(sel.check_node_visibility(id) == data_selection::deleted)); -} + } // namespace api06 diff --git a/src/api06/node_version_handler.cpp b/src/api06/node_version_handler.cpp index e03fad62..f1160202 100644 --- a/src/api06/node_version_handler.cpp +++ b/src/api06/node_version_handler.cpp @@ -12,20 +12,20 @@ namespace api06 { -node_version_responder::node_version_responder(mime::type mt, osm_nwr_id_t id_, osm_version_t v_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_), v(v_) { +node_version_responder::node_version_responder(mime::type mt, osm_nwr_id_t id, osm_version_t v, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_historical_nodes({std::make_pair(id, v)}) == 0) { throw http::not_found(""); } } -node_version_handler::node_version_handler(request &, osm_nwr_id_t id_, osm_version_t v_) : id(id_), v(v_) {} +node_version_handler::node_version_handler(request &, osm_nwr_id_t id, osm_version_t v) : id(id), v(v) {} std::string node_version_handler::log_name() const { return "node"; } responder_ptr_t node_version_handler::responder(data_selection &w) const { - return responder_ptr_t(new node_version_responder(mime_type, id, v, w)); + return std::make_unique(mime_type, id, v, w); } } // namespace api06 diff --git a/src/api06/node_ways_handler.cpp b/src/api06/node_ways_handler.cpp index 16c42992..cdb8c580 100644 --- a/src/api06/node_ways_handler.cpp +++ b/src/api06/node_ways_handler.cpp @@ -12,26 +12,27 @@ namespace api06 { -node_ways_responder::node_ways_responder(mime::type mt, osm_nwr_id_t id_, - data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +node_ways_responder::node_ways_responder(mime::type mt, osm_nwr_id_t id, + data_selection &w) + : osm_current_responder(mt, w) { - if (sel.select_nodes({ id }) > 0 && is_visible()) { + if (sel.select_nodes({ id }) > 0 && is_visible(id)) { sel.select_ways_from_nodes(); } sel.drop_nodes(); } -node_ways_handler::node_ways_handler(request &, osm_nwr_id_t id_) : id(id_) {} +bool node_ways_responder::is_visible(osm_nwr_id_t id) { + return (!(sel.check_node_visibility(id) == data_selection::deleted)); +} + +node_ways_handler::node_ways_handler(request &, osm_nwr_id_t id) : id(id) {} std::string node_ways_handler::log_name() const { return "node/ways"; } responder_ptr_t node_ways_handler::responder(data_selection &x) const { - return responder_ptr_t(new node_ways_responder(mime_type, id, x)); + return std::make_unique(mime_type, id, x); } -bool node_ways_responder::is_visible() { - return (!(sel.check_node_visibility(id) == data_selection::deleted)); -} } // namespace api06 diff --git a/src/api06/nodes_handler.cpp b/src/api06/nodes_handler.cpp index b22110a9..74879b1c 100644 --- a/src/api06/nodes_handler.cpp +++ b/src/api06/nodes_handler.cpp @@ -23,14 +23,14 @@ using std::string; namespace api06 { -nodes_responder::nodes_responder(mime::type mt, vector ids_, - data_selection &w_) - : osm_current_responder(mt, w_), ids(ids_) { +nodes_responder::nodes_responder(mime::type mt, const vector &ids, + data_selection &w) + : osm_current_responder(mt, w) { vector current_ids; vector historic_ids; - for (id_version idv : ids_) { + for (const auto &idv : ids) { if (idv.version) { historic_ids.push_back(std::make_pair(idv.id, *idv.version)); } else { @@ -59,7 +59,7 @@ std::string nodes_handler::log_name() const { } responder_ptr_t nodes_handler::responder(data_selection &x) const { - return responder_ptr_t(new nodes_responder(mime_type, ids, x)); + return std::make_unique(mime_type, ids, x); } /** diff --git a/src/api06/relation_full_handler.cpp b/src/api06/relation_full_handler.cpp index b8d32d27..2a327abd 100644 --- a/src/api06/relation_full_handler.cpp +++ b/src/api06/relation_full_handler.cpp @@ -17,22 +17,23 @@ using std::vector; namespace api06 { -relation_full_responder::relation_full_responder(mime::type mt_, osm_nwr_id_t id_, - data_selection &w_) - : osm_current_responder(mt_, w_), id(id_) { +relation_full_responder::relation_full_responder(mime::type mt_, osm_nwr_id_t id, + data_selection &w) + : osm_current_responder(mt_, w) { if (sel.select_relations({id}) == 0) { throw http::not_found(fmt::format("Relation {:d} was not found.", id)); } - check_visibility(); + check_visibility(id); sel.select_nodes_from_relations(); sel.select_ways_from_relations(); sel.select_nodes_from_way_nodes(); sel.select_relations_members_of_relations(); } -void relation_full_responder::check_visibility() { +void relation_full_responder::check_visibility(osm_nwr_id_t id) { + switch (sel.check_relation_visibility(id)) { case data_selection::non_exist: @@ -47,8 +48,8 @@ void relation_full_responder::check_visibility() { } } -relation_full_handler::relation_full_handler(request &, osm_nwr_id_t id_) - : id(id_) { +relation_full_handler::relation_full_handler(request &, osm_nwr_id_t id) + : id(id) { logger::message( fmt::format("starting relation/full handler with id = {:d}", id)); } @@ -56,7 +57,7 @@ relation_full_handler::relation_full_handler(request &, osm_nwr_id_t id_) std::string relation_full_handler::log_name() const { return "relation/full"; } responder_ptr_t relation_full_handler::responder(data_selection &x) const { - return responder_ptr_t(new relation_full_responder(mime_type, id, x)); + return std::make_unique(mime_type, id, x); } } // namespace api06 diff --git a/src/api06/relation_handler.cpp b/src/api06/relation_handler.cpp index 629556c0..27cf6fd7 100644 --- a/src/api06/relation_handler.cpp +++ b/src/api06/relation_handler.cpp @@ -12,29 +12,30 @@ namespace api06 { -relation_responder::relation_responder(mime::type mt, osm_nwr_id_t id_, - data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +relation_responder::relation_responder(mime::type mt, osm_nwr_id_t id, + data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_relations({id}) == 0) { throw http::not_found(fmt::format("Relation {:d} was not found.", id)); } - check_visibility(); + check_visibility(id); } -relation_handler::relation_handler(request &, osm_nwr_id_t id_) : id(id_) {} +void relation_responder::check_visibility(osm_nwr_id_t id) { + if (sel.check_relation_visibility(id) == data_selection::deleted) { + // TODO: fix error message / throw structure to emit better error message + throw http::gone(); + } +} + +relation_handler::relation_handler(request &, osm_nwr_id_t id) : id(id) {} std::string relation_handler::log_name() const { return "relation"; } responder_ptr_t relation_handler::responder(data_selection &x) const { - return responder_ptr_t(new relation_responder(mime_type, id, x)); + return std::make_unique(mime_type, id, x); } -void relation_responder::check_visibility() { - if (sel.check_relation_visibility(id) == data_selection::deleted) { - // TODO: fix error message / throw structure to emit better error message - throw http::gone(); - } -} } // namespace api06 diff --git a/src/api06/relation_history_handler.cpp b/src/api06/relation_history_handler.cpp index c92ad9fd..1ce74f81 100644 --- a/src/api06/relation_history_handler.cpp +++ b/src/api06/relation_history_handler.cpp @@ -12,20 +12,20 @@ namespace api06 { -relation_history_responder::relation_history_responder(mime::type mt, osm_nwr_id_t id_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +relation_history_responder::relation_history_responder(mime::type mt, osm_nwr_id_t id, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_relations_with_history({id}) == 0) { throw http::not_found(""); } } -relation_history_handler::relation_history_handler(request &, osm_nwr_id_t id_) : id(id_) {} +relation_history_handler::relation_history_handler(request &, osm_nwr_id_t id) : id(id) {} std::string relation_history_handler::log_name() const { return "relation/history"; } responder_ptr_t relation_history_handler::responder(data_selection &w) const { - return responder_ptr_t(new relation_history_responder(mime_type, id, w)); + return std::make_unique(mime_type, id, w); } } // namespace api06 diff --git a/src/api06/relation_relations_handler.cpp b/src/api06/relation_relations_handler.cpp index f1023ed2..fc1a1554 100644 --- a/src/api06/relation_relations_handler.cpp +++ b/src/api06/relation_relations_handler.cpp @@ -12,27 +12,28 @@ namespace api06 { -relation_relations_responder::relation_relations_responder(mime::type mt, osm_nwr_id_t id_, - data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +relation_relations_responder::relation_relations_responder(mime::type mt, osm_nwr_id_t id, + data_selection &w) + : osm_current_responder(mt, w) { - if (sel.select_relations({id}) > 0 && is_visible()) { + if (sel.select_relations({id}) > 0 && is_visible(id)) { sel.select_relations_from_relations(true); } else sel.drop_relations(); } -relation_relations_handler::relation_relations_handler(request &, osm_nwr_id_t id_) : id(id_) {} +bool relation_relations_responder::is_visible(osm_nwr_id_t id) { + return (!(sel.check_relation_visibility(id) == data_selection::deleted)); +} + +relation_relations_handler::relation_relations_handler(request &, osm_nwr_id_t id) : id(id) {} std::string relation_relations_handler::log_name() const { return "relation/relations"; } responder_ptr_t relation_relations_handler::responder(data_selection &x) const { - return responder_ptr_t(new relation_relations_responder(mime_type, id, x)); + return std::make_unique(mime_type, id, x); } -bool relation_relations_responder::is_visible() { - return (!(sel.check_relation_visibility(id) == data_selection::deleted)); -} } // namespace api06 diff --git a/src/api06/relation_version_handler.cpp b/src/api06/relation_version_handler.cpp index d73113f7..350c843b 100644 --- a/src/api06/relation_version_handler.cpp +++ b/src/api06/relation_version_handler.cpp @@ -12,21 +12,21 @@ namespace api06 { -relation_version_responder::relation_version_responder(mime::type mt, osm_nwr_id_t id_, - osm_version_t v_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_), v(v_) { +relation_version_responder::relation_version_responder(mime::type mt, osm_nwr_id_t id, + osm_version_t v, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_historical_relations({std::make_pair(id, v)}) == 0) { throw http::not_found(""); } } -relation_version_handler::relation_version_handler(request &, osm_nwr_id_t id_, osm_version_t v_) : id(id_), v(v_) {} +relation_version_handler::relation_version_handler(request &, osm_nwr_id_t id, osm_version_t v) : id(id), v(v) {} std::string relation_version_handler::log_name() const { return "relation"; } responder_ptr_t relation_version_handler::responder(data_selection &x) const { - return responder_ptr_t(new relation_version_responder(mime_type, id, v, x)); + return std::make_unique(mime_type, id, v, x); } } // namespace api06 diff --git a/src/api06/relations_handler.cpp b/src/api06/relations_handler.cpp index 6f59c126..ee287660 100644 --- a/src/api06/relations_handler.cpp +++ b/src/api06/relations_handler.cpp @@ -23,13 +23,14 @@ using std::string; namespace api06 { -relations_responder::relations_responder(mime::type mt, vector ids_, - data_selection &s_) - : osm_current_responder(mt, s_), ids(ids_) { +relations_responder::relations_responder(mime::type mt, const vector &ids, + data_selection &s) + : osm_current_responder(mt, s) { + vector current_ids; vector historic_ids; - for (id_version idv : ids_) { + for (id_version idv : ids) { if (idv.version) { historic_ids.push_back(std::make_pair(idv.id, *idv.version)); } else { @@ -59,7 +60,7 @@ std::string relations_handler::log_name() const { } responder_ptr_t relations_handler::responder(data_selection &x) const { - return responder_ptr_t(new relations_responder(mime_type, ids, x)); + return std::make_unique(mime_type, ids, x); } /** diff --git a/src/api06/way_full_handler.cpp b/src/api06/way_full_handler.cpp index 867f9395..e32fb4ff 100644 --- a/src/api06/way_full_handler.cpp +++ b/src/api06/way_full_handler.cpp @@ -16,18 +16,18 @@ using std::vector; namespace api06 { -way_full_responder::way_full_responder(mime::type mt_, osm_nwr_id_t id_, - data_selection &w_) - : osm_current_responder(mt_, w_), id(id_) { +way_full_responder::way_full_responder(mime::type mt, osm_nwr_id_t id, + data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_ways({id}) == 0) { throw http::not_found(fmt::format("Way {:d} was not found.", id)); } - check_visibility(); + check_visibility(id); sel.select_nodes_from_way_nodes(); } -void way_full_responder::check_visibility() { +void way_full_responder::check_visibility(osm_nwr_id_t id) { switch (sel.check_way_visibility(id)) { case data_selection::non_exist: @@ -42,7 +42,7 @@ void way_full_responder::check_visibility() { } } -way_full_handler::way_full_handler(request &, osm_nwr_id_t id_) : id(id_) { +way_full_handler::way_full_handler(request &, osm_nwr_id_t id) : id(id) { logger::message( fmt::format("starting way/full handler with id = {:d}", id)); } @@ -50,7 +50,7 @@ way_full_handler::way_full_handler(request &, osm_nwr_id_t id_) : id(id_) { std::string way_full_handler::log_name() const { return "way/full"; } responder_ptr_t way_full_handler::responder(data_selection &x) const { - return responder_ptr_t(new way_full_responder(mime_type, id, x)); + return std::make_unique(mime_type, id, x); } } // namespace api06 diff --git a/src/api06/way_handler.cpp b/src/api06/way_handler.cpp index 33ffa085..208796e6 100644 --- a/src/api06/way_handler.cpp +++ b/src/api06/way_handler.cpp @@ -14,28 +14,28 @@ namespace api06 { -way_responder::way_responder(mime::type mt, osm_nwr_id_t id_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +way_responder::way_responder(mime::type mt, osm_nwr_id_t id, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_ways({id}) == 0) { throw http::not_found(fmt::format("Way {:d} was not found.", id)); } - check_visibility(); + check_visibility(id); } -way_handler::way_handler(request &, osm_nwr_id_t id_) : id(id_) {} - -std::string way_handler::log_name() const { return "way"; } - -responder_ptr_t way_handler::responder(data_selection &x) const { - return responder_ptr_t(new way_responder(mime_type, id, x)); -} - -void way_responder::check_visibility() { +void way_responder::check_visibility(osm_nwr_id_t id) { if (sel.check_way_visibility(id) == data_selection::deleted) { // TODO: fix error message / throw structure to emit better error message throw http::gone(); } } +way_handler::way_handler(request &, osm_nwr_id_t id) : id(id) {} + +std::string way_handler::log_name() const { return "way"; } + +responder_ptr_t way_handler::responder(data_selection &x) const { + return std::make_unique(mime_type, id, x); +} + } // namespace api06 diff --git a/src/api06/way_history_handler.cpp b/src/api06/way_history_handler.cpp index 4f110884..563b8ba8 100644 --- a/src/api06/way_history_handler.cpp +++ b/src/api06/way_history_handler.cpp @@ -12,20 +12,20 @@ namespace api06 { -way_history_responder::way_history_responder(mime::type mt, osm_nwr_id_t id_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +way_history_responder::way_history_responder(mime::type mt, osm_nwr_id_t id, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_ways_with_history({id}) == 0) { throw http::not_found(""); } } -way_history_handler::way_history_handler(request &, osm_nwr_id_t id_) : id(id_) {} +way_history_handler::way_history_handler(request &, osm_nwr_id_t id) : id(id) {} std::string way_history_handler::log_name() const { return "way/history"; } responder_ptr_t way_history_handler::responder(data_selection &w) const { - return responder_ptr_t(new way_history_responder(mime_type, id, w)); + return std::make_unique(mime_type, id, w); } } // namespace api06 diff --git a/src/api06/way_relations_handler.cpp b/src/api06/way_relations_handler.cpp index 7415e23e..bc1b5847 100644 --- a/src/api06/way_relations_handler.cpp +++ b/src/api06/way_relations_handler.cpp @@ -12,26 +12,28 @@ namespace api06 { -way_relations_responder::way_relations_responder(mime::type mt, osm_nwr_id_t id_, - data_selection &w_) - : osm_current_responder(mt, w_), id(id_) { +way_relations_responder::way_relations_responder(mime::type mt, osm_nwr_id_t id, + data_selection &w) + : osm_current_responder(mt, w) { - if (sel.select_ways({id}) > 0 && is_visible()) { + if (sel.select_ways({id}) > 0 && is_visible(id)) { sel.select_relations_from_ways(); } sel.drop_ways(); } -way_relations_handler::way_relations_handler(request &, osm_nwr_id_t id_) : id(id_) {} +bool way_relations_responder::is_visible(osm_nwr_id_t id) { + return (!(sel.check_way_visibility(id) == data_selection::deleted)); +} + + +way_relations_handler::way_relations_handler(request &, osm_nwr_id_t id) : id(id) {} std::string way_relations_handler::log_name() const { return "way/relations"; } responder_ptr_t way_relations_handler::responder(data_selection &x) const { - return responder_ptr_t(new way_relations_responder(mime_type, id, x)); + return std::make_unique(mime_type, id, x); } -bool way_relations_responder::is_visible() { - return (!(sel.check_way_visibility(id) == data_selection::deleted)); -} } // namespace api06 diff --git a/src/api06/way_version_handler.cpp b/src/api06/way_version_handler.cpp index 9e2fde7c..5a721d36 100644 --- a/src/api06/way_version_handler.cpp +++ b/src/api06/way_version_handler.cpp @@ -14,20 +14,20 @@ namespace api06 { -way_version_responder::way_version_responder(mime::type mt, osm_nwr_id_t id_, osm_version_t v_, data_selection &w_) - : osm_current_responder(mt, w_), id(id_), v(v_) { +way_version_responder::way_version_responder(mime::type mt, osm_nwr_id_t id, osm_version_t v, data_selection &w) + : osm_current_responder(mt, w) { if (sel.select_historical_ways({std::make_pair(id, v)}) == 0) { throw http::not_found(""); } } -way_version_handler::way_version_handler(request &, osm_nwr_id_t id_, osm_version_t v_) : id(id_), v(v_) {} +way_version_handler::way_version_handler(request &, osm_nwr_id_t id, osm_version_t v) : id(id), v(v) {} std::string way_version_handler::log_name() const { return "way"; } responder_ptr_t way_version_handler::responder(data_selection &x) const { - return responder_ptr_t(new way_version_responder(mime_type, id, v, x)); + return std::make_unique(mime_type, id, v, x); } } // namespace api06 diff --git a/src/api06/ways_handler.cpp b/src/api06/ways_handler.cpp index c5c7e970..9c387480 100644 --- a/src/api06/ways_handler.cpp +++ b/src/api06/ways_handler.cpp @@ -14,22 +14,18 @@ #include "cgimap/infix_ostream_iterator.hpp" #include "cgimap/api06/id_version_io.hpp" - #include -using std::stringstream; -using std::vector; -using std::string; - namespace api06 { -ways_responder::ways_responder(mime::type mt, vector ids_, - data_selection &w_) - : osm_current_responder(mt, w_), ids(ids_) { - vector current_ids; - vector historic_ids; +ways_responder::ways_responder(mime::type mt, const std::vector& ids, + data_selection &w) + : osm_current_responder(mt, w) { + + std::vector current_ids; + std::vector historic_ids; - for (id_version idv : ids_) { + for (id_version idv : ids) { if (idv.version) { historic_ids.push_back(std::make_pair(idv.id, *idv.version)); } else { @@ -50,7 +46,7 @@ ways_responder::ways_responder(mime::type mt, vector ids_, ways_handler::ways_handler(request &req) : ids(validate_request(req)) {} std::string ways_handler::log_name() const { - stringstream msg; + std::stringstream msg; msg << "ways?ways="; std::copy(ids.begin(), ids.end(), infix_ostream_iterator(msg, ", ")); @@ -58,15 +54,15 @@ std::string ways_handler::log_name() const { } responder_ptr_t ways_handler::responder(data_selection &x) const { - return responder_ptr_t(new ways_responder(mime_type, ids, x)); + return std::make_unique(mime_type, ids, x); } /** * Validates an FCGI request, returning the valid list of ids or * throwing an error if there was no valid list of way ids. */ -vector ways_handler::validate_request(request &req) { - vector myids = parse_id_list_params(req, "ways"); +std::vector ways_handler::validate_request(request &req) { + std::vector myids = parse_id_list_params(req, "ways"); if (myids.empty()) { throw http::bad_request( diff --git a/src/api07/map_handler.cpp b/src/api07/map_handler.cpp index 27ab47e2..2cb1ffcd 100644 --- a/src/api07/map_handler.cpp +++ b/src/api07/map_handler.cpp @@ -53,24 +53,19 @@ string map_handler::log_name() const { } responder_ptr_t map_handler::responder(data_selection &x) const { - return responder_ptr_t(new map_responder(mime_type, bounds, x)); + return std::make_unique(mime_type, bounds, x); } -namespace { -bool is_bbox(const std::pair &p) { - return p.first == "bbox"; -} -} // anonymous namespace - /** * Validates an FCGI request, returning the valid bounding box or * throwing an error if there was no valid bounding box. */ bbox map_handler::validate_request(request &req) { string decoded = http::urldecode(get_query_string(req)); - const std::vector > params = http::parse_params(decoded); + const auto params = http::parse_params(decoded); auto itr = - std::find_if(params.begin(), params.end(), is_bbox); + std::find_if(params.begin(), params.end(), + [](const pair &p) { return p.first == "bbox"; }); bbox bounds; if ((itr == params.end()) || !bounds.parse(itr->second)) {