Added port detection to URL parser, if not specified.

Before, if you parsed a URL using fr::URL, and a port wasn't explicitly mentioned in the URL, then fr::URL::get_port() would return an empty string. 

Now, it will try to detect the port type if none is specified. For example, URLs beginning with http, will be given a port of 80. This is to simplify usage of the URL class.
This commit is contained in:
Fred Nicolson 2017-05-24 11:05:14 +01:00
parent 431f646bae
commit 64cce75bda

View File

@ -63,6 +63,28 @@ namespace fr
pos = (pos != std::string::npos) ? pos : url.size();
host = url.substr(parse_offset, pos - parse_offset);
parse_offset = pos + 1;
//Guess port based on scheme, if it's not explicitly provided.
switch(scheme)
{
case URL::HTTP:
port = "80";
break;
case URL::HTTPS:
port = "443";
break;
case URL::IRC:
port = "6697";
break;
case URL::FTP:
port = "21";
break;
case URL::SFTP:
port = "25";
break;
default:
break;
}
}
//Exit if done