00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 #pragma once 00012 00013 #include <string> 00014 00015 namespace Common 00016 { 00017 00018 class Uri 00019 { 00020 public: 00021 explicit Uri(const std::string& uriString) 00022 { 00023 Initialize(uriString.c_str(), uriString.size()); 00024 } 00025 00026 explicit Uri(const char* uriString) 00027 { 00028 Initialize(uriString, 0); 00029 } 00030 00031 std::string Scheme() const 00032 { 00033 return SchemeStr; 00034 } 00035 00036 std::string User() const 00037 { 00038 return UserStr; 00039 } 00040 00041 std::string Password() const 00042 { 00043 return PasswordStr; 00044 } 00045 00046 std::string Host() const 00047 { 00048 return HostStr; 00049 } 00050 00051 unsigned Port() const 00052 { 00053 return PortNum; 00054 } 00055 00056 private: 00057 void Initialize(const char* uriString, std::size_t len); 00058 00059 private: 00060 std::string SchemeStr; 00061 std::string UserStr; 00062 std::string PasswordStr; 00063 std::string HostStr; 00064 unsigned PortNum; 00065 }; 00066 00067 } // namespace Common 00068