#ifndef BASE_URL_H #define BASE_URL_H #include namespace base { /** Class base::Url supports following format: * [protocol://][hostname[:port]][/filename.ext][?options] */ class Url { protected: std::string fUrl; /** Full URL */ bool fValid; /** Is URL valid */ std::string fProtocol; std::string fHostName; int fPort; std::string fFileName; std::string fOptions; bool GetOption(const std::string& optname, std::string* value = 0) const; public: Url(); Url(const char* url); Url(const std::string& url); virtual ~Url(); void Reset(); bool SetUrl(const std::string& url, bool showerr = true); std::string GetUrl() const { return fUrl; } bool IsValid() const { return fValid; } std::string GetProtocol() const { return fProtocol; } std::string GetHostName() const { return fHostName; } int GetPort() const { return fPort; } std::string GetPortStr() const; std::string GetFileName() const { return fFileName; } std::string GetFullName() const; std::string GetOptions() const { return fOptions; } bool HasOption(const std::string& optname) const { return GetOption(optname); } std::string GetOptionValue(const std::string& optname) const; }; } #endif