mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-01 09:05:27 +00:00
use local request parser
This commit is contained in:
parent
4da1e4d9c2
commit
75300eb45e
7 changed files with 82 additions and 87 deletions
|
|
@ -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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue