| 57 | } |
| 58 | |
| 59 | QueryFields ParseUriQuery(std::string_view query, std::string_view delimiter) noexcept |
| 60 | { |
| 61 | QueryFields result; |
| 62 | |
| 63 | while (!query.empty()) |
| 64 | { |
| 65 | const auto queryItemEnd = query.find(delimiter); |
| 66 | const auto queryItem = query.substr(0, queryItemEnd); |
| 67 | |
| 68 | query.remove_prefix( |
| 69 | queryItemEnd != std::string_view::npos ? queryItemEnd + 1 : |
| 70 | query.size()); |
| 71 | |
| 72 | const auto queryItemValueStart = queryItem.find('='); |
| 73 | |
| 74 | const auto queryItemValue = queryItem.substr( |
| 75 | queryItemValueStart != std::string_view::npos ? |
| 76 | queryItemValueStart + 1 : |
| 77 | queryItem.size()); |
| 78 | |
| 79 | const auto queryItemKey = queryItem.substr( |
| 80 | 0, queryItemValueStart != std::string_view::npos ? |
| 81 | queryItemValueStart : |
| 82 | queryItem.size()); |
| 83 | |
| 84 | result.emplace(queryItemKey, queryItemValue); |
| 85 | } |
| 86 | |
| 87 | return result; |
| 88 | } |
no test coverage detected