use local request parser

This commit is contained in:
yggverse 2024-08-15 16:15:26 +03:00
parent 4da1e4d9c2
commit 75300eb45e
7 changed files with 82 additions and 87 deletions

View file

@ -1,6 +1,7 @@
#include "request.hpp"
using namespace app::browser::main::tab::data::navbar;
using namespace std;
Request::Request()
{
@ -13,10 +14,14 @@ Request::Request()
true
);
parse();
// Connect events
signal_changed().connect(
[this]
{
parse();
activate_action(
"navbar.refresh"
);
@ -26,6 +31,8 @@ Request::Request()
signal_activate().connect(
[this]
{
parse();
activate_action(
"data.update"
);
@ -33,4 +40,56 @@ Request::Request()
);
}
// Getters
string Request::get_scheme()
{
return scheme;
}
string Request::get_host()
{
return host;
}
string Request::get_path()
{
return path;
}
string Request::get_query()
{
return path;
}
int Request::get_port()
{
return stoi(
port
);
}
// Private helpers
void Request::parse() // make private??
{
string subject = get_text();
smatch results;
static const regex pattern( // @TODO user:password@#fragment?
R"regex(^((\w+)?:\/\/)?([^:\/]+)?(:(\d+)?)?([^\?$]+)?(\?(.*)?)?)regex"
);
regex_search(
subject,
results,
pattern
);
scheme = results[2];
host = results[3];
port = results[5];
path = results[6];
query = results[8];
}
Request::~Request() = default;