Server::Request::path is split into path and query_string

This commit is contained in:
eidheim 2017-07-03 11:44:46 +02:00
commit 0c9cb000b4
3 changed files with 48 additions and 24 deletions

View file

@ -57,6 +57,15 @@ int main() {
<< content;
};
server.resource["^/query_string$"]["GET"] = [](shared_ptr<HttpServer::Response> response, shared_ptr<HttpServer::Request> request) {
assert(request->path == "/query_string");
assert(request->query_string == "testing");
auto queries = request->parse_query_string();
auto it = queries.find("Testing");
assert(it != queries.end() && it->first == "testing" && it->second == "");
response->write(request->query_string);
};
thread server_thread([&server]() {
//Start server
server.start();
@ -163,6 +172,14 @@ int main() {
assert(client.connections->size() == 1);
assert(connection == client.connections->front().get());
}
{
stringstream output;
auto r = client.request("GET", "/query_string?testing");
assert(r->content.string() == "testing");
assert(client.connections->size() == 1);
assert(connection == client.connections->front().get());
}
}
{

View file

@ -152,27 +152,22 @@ int main() {
asio::ip::tcp::socket socket(io_service);
SimpleWeb::Server<HTTP>::Request request(socket);
{
request.path = "/?";
request.query_string = "";
auto queries = request.parse_query_string();
assert(queries.empty());
}
{
request.path = "/";
request.query_string = "=";
auto queries = request.parse_query_string();
assert(queries.empty());
}
{
request.path = "/?=";
request.query_string = "=test";
auto queries = request.parse_query_string();
assert(queries.empty());
}
{
request.path = "/?=test";
auto queries = request.parse_query_string();
assert(queries.empty());
}
{
request.path = "/?a=1%202%20%203&b=3+4&c&d=æ%25ø%26å%3F";
request.query_string = "a=1%202%20%203&b=3+4&c&d=æ%25ø%26å%3F";
auto queries = request.parse_query_string();
{
auto range = queries.equal_range("a");