// // aegis - project change supervisor // Copyright (C) 2004-2006, 2008 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // . // #ifndef LIBAEGIS_URL_H #define LIBAEGIS_URL_H #include /** * The url class is used to represent a uniform resource locator (URL). */ class url { public: /** * The destructor. */ virtual ~url(); /** * The constructor. * * \param s * The string to be broken up to fill out the component pieces. */ url(const nstring &s); /** * The constructor. * * \param s * The string to be broken up to fill out the component pieces. */ url(const char *s); /** * The copy constructor. */ url(const url &); /** * The assignment operator. */ url &operator=(const url &); /** * The split method is used to replace the URL's contents with the * given string, once it has been split into its component parts. * * \param s * The string to be disassembled. */ void split(const char *s); /** * The is_a_file method is used to determine if the URL is a simple * file URL. * * \returns * bool; true if it's a simple file URL, * false if it's something else. */ bool is_a_file() const; /** * The get_path method is used to extract the path part of a file * URL. The behaviour is undefined if is_a_file is false. */ nstring get_path() const; /** * The set_path_if_empty method is used to set the URL's path to the * given default if it is not set already. */ void set_path_if_empty(const nstring &dflt); /** * The set_query_if_empty method is used to set the URL's query to * the given default if it is not set already. */ void set_query_if_empty(const nstring &dflt); /** * The reassemble method is used to reassemble the URL into a * string representation. * * \param exclude_userpass * Set it to true if you need to exclude userpass from the * result URL. Default to false. */ nstring reassemble(bool exclude_userpass = false) const; /** * The set_host_part_from method is used to set the host part (and * protocol, and port) from the given argument. * * \param arg * The URL to take the host part from. */ void set_host_part_from(const url &arg); /** * The get_protocol method is used to obtain the protocol name from * the URL. */ nstring get_protocol() const { return protocol; } /** * The get_userpass method is used to obtain the userpass from * the URL. */ nstring get_userpass() const { return userpass; } /** * The get_hostname method is used to obtain the host name from the * URL. */ nstring get_hostname() const { return hostname; } /** * The get_port method is used to obtain the port name from the * URL. */ int get_port() const { return port; } private: /** * The protocol instance variable is used to remember the * communications protocol to be used. */ nstring protocol; /** The userpass instance variable is used to remember the * username and password embedded in the url. * It must end with the @ sign. */ nstring userpass; /** * The hostname instance variable is used to remember the name of * the host to talk to. */ nstring hostname; /** * The port instance variable is used to remember the point number * to connect to on the remote host. */ int port; /** * The path instance variable is used to remember the path to the * file being queried on the remote host. */ nstring path; /** * The query instance variable is used to remember the query string * (including question mark) to be sent to the remote host. */ nstring query; /** * The anchor_name instance variable is used to remember the name * of the anchor (including the hash sign) within the page fetched. */ nstring anchor_name; /** * The default constructor. Do not use. */ url(); }; #endif // LIBAEGIS_URL_H