Helper: Parse query string (e.g., "?id=123&name=test")
| 109 | |
| 110 | // Helper: Parse query string (e.g., "?id=123&name=test") |
| 111 | map<string, string> parse_query_string(const string& query) { |
| 112 | map<string, string> params; |
| 113 | if (query.empty() || query[0] != '?') return params; |
| 114 | |
| 115 | vector<string> pairs = split(query.substr(1), '&'); |
| 116 | for (const auto& pair : pairs) { |
| 117 | size_t eq_pos = pair.find('='); |
| 118 | if (eq_pos != string::npos) { |
| 119 | string key = pair.substr(0, eq_pos); |
| 120 | string value = pair.substr(eq_pos + 1); |
| 121 | params[key] = value; |
| 122 | } |
| 123 | } |
| 124 | return params; |
| 125 | } |
| 126 | |
| 127 | // Helper: Get HTTP status text |
| 128 | const char* status_text(int code) { |
no test coverage detected