| 174 | } |
| 175 | |
| 176 | static std::string canonicalize_path(const std::string& path, const httplib::Params& params) { |
| 177 | if (params.empty()) return path; |
| 178 | std::vector<std::pair<std::string, std::string>> pairs; |
| 179 | pairs.reserve(params.size()); |
| 180 | for (const auto& param : params) { |
| 181 | pairs.emplace_back(param.first, param.second); |
| 182 | } |
| 183 | auto query = canonicalize_query(std::move(pairs)); |
| 184 | return query.empty() ? path : path + "?"s + query; |
| 185 | } |
| 186 | |
| 187 | static std::vector<std::pair<std::string, std::string>> parse_query_pairs(const std::string& resource) { |
| 188 | std::vector<std::pair<std::string, std::string>> params; |
no test coverage detected