Panda3D
|
A container for a URL, e.g. More...
#include "urlSpec.h"
Public Member Functions | |
URLSpec (const std::string &url, bool server_name_expected=false) | |
URLSpec (const URLSpec &url, const Filename &path) | |
Creates a URLSpec by appending a path to the end of the old URLSpec, inserting an intervening forward slash if necessary. | |
const char * | c_str () const |
int | compare_to (const URLSpec &other) const |
Returns a number less than zero if this URLSpec sorts before the other one, greater than zero if it sorts after, or zero if they are equivalent. | |
bool | empty () const |
Returns false if the URLSpec is valid (not empty), or true if it is an empty string. | |
std::string | get_authority () const |
size_t | get_hash () const |
std::string | get_path () const |
std::string | get_path_and_query () const |
Returns the path (or "/" if no path is specified), followed by the query if it is specified. | |
uint16_t | get_port () const |
std::string | get_port_str () const |
Returns the port specified by the URL as a string, or the empty string if no port is specified. | |
std::string | get_query () const |
std::string | get_scheme () const |
std::string | get_server () const |
std::string | get_server_and_port () const |
const std::string & | get_url () const |
Returns the complete URL specification. | |
std::string | get_username () const |
bool | has_authority () const |
Returns true if the URL specifies an authority (this includes username, server, and/or port), false otherwise. | |
bool | has_path () const |
Returns true if the URL includes a path specification (that is, the particular filename on the server to retrieve), false otherwise. | |
bool | has_port () const |
Returns true if the URL specifies a port number, false otherwise. | |
bool | has_query () const |
Returns true if the URL includes a query specification, false otherwise. | |
bool | has_scheme () const |
Returns true if the URL specifies a scheme (e.g. | |
bool | has_server () const |
Returns true if the URL specifies a server name, false otherwise. | |
bool | has_username () const |
Returns true if the URL specifies a username (and/or password), false otherwise. | |
bool | input (std::istream &in) |
bool | is_default_port () const |
Returns true if the port number encoded in this URL is the default port number for the scheme (or if there is no port number), or false if it is a nonstandard port. | |
bool | is_ssl () const |
size_t | length () const |
operator bool () const | |
Returns true if the URLSpec is valid (not empty), or false if it is an empty string. | |
operator const std::string & () const | |
bool | operator!= (const URLSpec &other) const |
bool | operator< (const URLSpec &other) const |
void | operator= (const std::string &url) |
bool | operator== (const URLSpec &other) const |
char | operator[] (size_t n) const |
void | output (std::ostream &out) const |
void | set_authority (const std::string &authority) |
void | set_path (const std::string &path) |
void | set_port (const std::string &port) |
void | set_port (uint16_t port) |
void | set_query (const std::string &query) |
void | set_scheme (const std::string &scheme) |
void | set_server (const std::string &server) |
void | set_server_and_port (const std::string &server_and_port) |
void | set_url (const std::string &url, bool server_name_expected=false) |
Completely replaces the URL with the indicated string. | |
void | set_username (const std::string &username) |
size_t | size () const |
Static Public Member Functions | |
static int | get_default_port_for_scheme (const std::string &scheme) |
Returns the default port number for the indicated scheme, or 0 if there is no known default. | |
static std::string | quote (const std::string &source, const std::string &safe="/") |
Returns the source string with all "unsafe" characters quoted, making a string suitable for placing in a URL. | |
static std::string | quote_plus (const std::string &source, const std::string &safe="/") |
Behaves like quote() with the additional behavior of replacing spaces with plus signs. | |
static std::string | unquote (const std::string &source) |
Reverses the operation of quote(): converts escaped characters of the form "%xx" to their ascii equivalent. | |
static std::string | unquote_plus (const std::string &source) |
Reverses the operation of quote_plus(): converts escaped characters of the form "%xx" to their ascii equivalent, and also converts plus signs to spaces. | |
Public Attributes | |
get_authority | |
Returns the authority specified by the URL (this includes username, server, and/or port), or empty string if no authority is specified. | |
get_path | |
Returns the path specified by the URL, or "/" if no path is specified. | |
get_port | |
Returns the port number specified by the URL, or the default port if not specified. | |
get_query | |
Returns the query specified by the URL, or empty string if no query is specified. | |
get_scheme | |
Returns the scheme specified by the URL, or empty string if no scheme is specified. | |
get_server | |
Returns the server name specified by the URL, if any. | |
get_server_and_port | |
Returns a string consisting of the server name, followed by a colon, followed by the port number. | |
get_username | |
Returns the username specified by the URL, if any. | |
is_ssl | |
Returns true if the URL's scheme specifies an SSL-secured protocol such as https, or false otherwise. | |
set_authority | |
Replaces the authority part of the URL specification. | |
set_path | |
Replaces the path part of the URL specification. | |
set_port | |
Replaces the port part of the URL specification. | |
set_query | |
Replaces the query part of the URL specification. | |
set_scheme | |
Replaces the scheme part of the URL specification. | |
set_server | |
Replaces the server part of the URL specification. | |
set_server_and_port | |
Replaces the server and port parts of the URL specification simultaneously. | |
set_username | |
Replaces the username part of the URL specification. | |
A container for a URL, e.g.
"http://server:port/path".
The URLSpec object is similar to a Filename in that it contains logic to identify the various parts of a URL and return (or modify) them separately.
URLSpec::URLSpec | ( | ) |
Definition at line 30 of file urlSpec.cxx.
|
inline |
Creates a URLSpec by appending a path to the end of the old URLSpec, inserting an intervening forward slash if necessary.
Definition at line 50 of file urlSpec.cxx.
References Filename::get_fullpath(), get_path, and set_path.
int URLSpec::compare_to | ( | const URLSpec & | other | ) | const |
Returns a number less than zero if this URLSpec sorts before the other one, greater than zero if it sorts after, or zero if they are equivalent.
Definition at line 76 of file urlSpec.cxx.
References get_path_and_query(), get_scheme, get_server, get_username, has_scheme(), has_server(), and has_username().
|
inline |
|
static |
Returns the default port number for the indicated scheme, or 0 if there is no known default.
Definition at line 171 of file urlSpec.cxx.
Referenced by is_default_port().
size_t URLSpec::get_hash | ( | ) | const |
Definition at line 112 of file urlSpec.cxx.
string URLSpec::get_path_and_query | ( | ) | const |
Returns the path (or "/" if no path is specified), followed by the query if it is specified.
Definition at line 227 of file urlSpec.cxx.
References get_query, has_path(), and has_query().
Referenced by compare_to().
|
inline |
Returns the port specified by the URL as a string, or the empty string if no port is specified.
Compare this with get_port(), which returns a default port number if no port is specified.
|
inline |
|
inline |
|
inline |
Returns true if the URL includes a path specification (that is, the particular filename on the server to retrieve), false otherwise.
Definition at line 101 of file urlSpec.I.
Referenced by get_path_and_query().
|
inline |
Returns true if the URL specifies a port number, false otherwise.
Definition at line 92 of file urlSpec.I.
Referenced by is_default_port().
|
inline |
Returns true if the URL includes a query specification, false otherwise.
Definition at line 109 of file urlSpec.I.
Referenced by get_path_and_query().
|
inline |
Returns true if the URL specifies a scheme (e.g.
"http:"), false otherwise.
Definition at line 58 of file urlSpec.I.
Referenced by compare_to(), and set_url().
|
inline |
Returns true if the URL specifies a server name, false otherwise.
Definition at line 84 of file urlSpec.I.
Referenced by compare_to().
|
inline |
Returns true if the URL specifies a username (and/or password), false otherwise.
Definition at line 76 of file urlSpec.I.
Referenced by compare_to().
bool URLSpec::input | ( | std::istream & | in | ) |
Definition at line 693 of file urlSpec.cxx.
bool URLSpec::is_default_port | ( | ) | const |
Returns true if the port number encoded in this URL is the default port number for the scheme (or if there is no port number), or false if it is a nonstandard port.
Definition at line 159 of file urlSpec.cxx.
References get_default_port_for_scheme(), get_scheme, and has_port().
|
inline |
|
inline |
|
inline |
|
inline |
void URLSpec::output | ( | std::ostream & | out | ) | const |
Definition at line 707 of file urlSpec.cxx.
|
static |
Returns the source string with all "unsafe" characters quoted, making a string suitable for placing in a URL.
Letters, digits, and the underscore, comma, period, and hyphen characters, as well as any included in the safe string, are left alone; all others are converted to hex representation.
Definition at line 718 of file urlSpec.cxx.
|
static |
Behaves like quote() with the additional behavior of replacing spaces with plus signs.
Definition at line 757 of file urlSpec.cxx.
void URLSpec::set_url | ( | const std::string & | url, |
bool | server_name_expected = false ) |
Completely replaces the URL with the indicated string.
If server_name_expected is true, it is a hint that an undecorated URL is probably a server name, not a local filename.
Definition at line 553 of file urlSpec.cxx.
References has_authority(), and has_scheme().
|
static |
Reverses the operation of quote(): converts escaped characters of the form "%xx" to their ascii equivalent.
Definition at line 800 of file urlSpec.cxx.
|
static |
Reverses the operation of quote_plus(): converts escaped characters of the form "%xx" to their ascii equivalent, and also converts plus signs to spaces.
Definition at line 836 of file urlSpec.cxx.
|
inline |
string URLSpec::get_path |
uint16_t URLSpec::get_port |
|
inline |
Returns the query specified by the URL, or empty string if no query is specified.
Definition at line 100 of file urlSpec.h.
Referenced by get_path_and_query().
string URLSpec::get_scheme |
Returns the scheme specified by the URL, or empty string if no scheme is specified.
Definition at line 93 of file urlSpec.h.
Referenced by compare_to(), and is_default_port().
|
inline |
Returns the server name specified by the URL, if any.
In case of an IPv6 address, does not include the enclosing brackets.
Definition at line 96 of file urlSpec.h.
Referenced by compare_to().
string URLSpec::get_server_and_port |
Returns a string consisting of the server name, followed by a colon, followed by the port number.
If the port number is not explicitly given in the URL, this string will include the implicit port number. If the server is an IPv6 address, it will be enclosed in square brackets.
|
inline |
Returns the username specified by the URL, if any.
This might also include a password, e.g. "username:password", although putting a password on the URL is probably a bad idea.
Definition at line 95 of file urlSpec.h.
Referenced by compare_to().
|
inline |
void URLSpec::set_authority |
void URLSpec::set_path |
void URLSpec::set_port |
void URLSpec::set_query |
void URLSpec::set_scheme |
void URLSpec::set_server |
void URLSpec::set_server_and_port |
void URLSpec::set_username |