libzypp 9.41.1
|
00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #ifndef ZYPP_URL_H 00013 #define ZYPP_URL_H 00014 00015 #include <zypp/url/UrlBase.h> 00016 #include <zypp/url/UrlUtils.h> 00017 00018 00020 namespace zypp 00021 { 00022 00023 namespace filesystem { 00024 class Pathname; 00025 } 00026 using filesystem::Pathname; 00027 00087 class Url 00088 { 00089 public: 00093 typedef zypp::url::EEncoding EEncoding; 00094 00098 typedef zypp::url::ViewOptions ViewOptions; 00099 00100 00101 ~Url(); 00102 Url(); 00103 00114 Url(const Url &url); 00115 00116 00127 Url(const zypp::url::UrlRef &url); 00128 00129 00143 Url(const std::string &encodedUrl); 00144 00145 00146 // ----------------- 00163 static url::UrlRef 00164 parseUrl(const std::string &encodedUrl); 00165 00166 00167 // ----------------- 00182 Url& 00183 operator = (const std::string &encodedUrl); 00184 00185 00196 Url& 00197 operator = (const Url &url); 00198 00199 00200 // ----------------- 00208 static bool 00209 registerScheme(const std::string &scheme, 00210 url::UrlRef urlImpl); 00211 00216 static zypp::url::UrlSchemes 00217 getRegisteredSchemes(); 00218 00223 static bool 00224 isRegisteredScheme(const std::string &scheme); 00225 00226 00227 // ----------------- 00232 zypp::url::UrlSchemes 00233 getKnownSchemes() const; 00234 00235 00250 bool 00251 isValidScheme(const std::string &scheme) const; 00252 00253 00255 static bool schemeIsLocal( const std::string & scheme_r ); 00257 bool schemeIsLocal() const { return schemeIsLocal( getScheme() ); } 00258 00260 static bool schemeIsRemote( const std::string & scheme_r ); 00262 bool schemeIsRemote() const { return schemeIsRemote( getScheme() ); } 00263 00265 static bool schemeIsVolatile( const std::string & scheme_r ); 00267 bool schemeIsVolatile() const { return schemeIsVolatile( getScheme() ); } 00268 00270 static bool schemeIsDownloading( const std::string & scheme_r ); 00272 bool schemeIsDownloading() const { return schemeIsDownloading( getScheme() ); } 00273 00283 bool 00284 isValid() const; 00285 00286 00287 // ----------------- 00295 std::string 00296 asString() const; 00297 00310 std::string 00311 asString(const ViewOptions &opts) const; 00312 00322 std::string 00323 asCompleteString() const; 00324 00325 00326 // ----------------- 00331 std::string 00332 getScheme() const; 00333 00334 00335 // ----------------- 00345 std::string 00346 getAuthority() const; 00347 00355 std::string 00356 getUsername(EEncoding eflag = zypp::url::E_DECODED) const; 00357 00365 std::string 00366 getPassword(EEncoding eflag = zypp::url::E_DECODED) const; 00367 00371 bool hasCredentialsInAuthority() const 00372 { return ! ( getUsername().empty() || getPassword().empty() ); } 00373 00386 std::string 00387 getHost(EEncoding eflag = zypp::url::E_DECODED) const; 00388 00393 std::string 00394 getPort() const; 00395 00396 00397 // ----------------- 00407 std::string 00408 getPathData() const; 00409 00418 std::string 00419 getPathName(EEncoding eflag = zypp::url::E_DECODED) const; 00420 00425 std::string 00426 getPathParams() const; 00427 00440 zypp::url::ParamVec 00441 getPathParamsVec() const; 00442 00462 zypp::url::ParamMap 00463 getPathParamsMap(EEncoding eflag = zypp::url::E_DECODED) const; 00464 00481 std::string 00482 getPathParam(const std::string ¶m, 00483 EEncoding eflag = zypp::url::E_DECODED) const; 00484 00485 00486 // ----------------- 00496 std::string 00497 getQueryString() const; 00498 00512 zypp::url::ParamVec 00513 getQueryStringVec() const; 00514 00533 zypp::url::ParamMap 00534 getQueryStringMap(EEncoding eflag = zypp::url::E_DECODED) const; 00535 00552 std::string 00553 getQueryParam(const std::string ¶m, 00554 EEncoding eflag = zypp::url::E_DECODED) const; 00555 00556 00557 // ----------------- 00565 std::string 00566 getFragment(EEncoding eflag = zypp::url::E_DECODED) const; 00567 00568 00569 // ----------------- 00576 void 00577 setScheme(const std::string &scheme); 00578 00579 00580 // ----------------- 00594 void 00595 setAuthority(const std::string &authority); 00596 00606 void 00607 setUsername(const std::string &user, 00608 EEncoding eflag = zypp::url::E_DECODED); 00609 00619 void 00620 setPassword(const std::string &pass, 00621 EEncoding eflag = zypp::url::E_DECODED); 00622 00643 void 00644 setHost(const std::string &host); 00645 00653 void 00654 setPort(const std::string &port); 00655 00656 00657 // ----------------- 00668 void 00669 setPathData(const std::string &pathdata); 00670 00678 void 00679 setPathName(const std::string &path, 00680 EEncoding eflag = zypp::url::E_DECODED); 00682 void 00683 setPathName(const Pathname &path, 00684 EEncoding eflag = zypp::url::E_DECODED); 00686 void 00687 setPathName(const char *path, 00688 EEncoding eflag = zypp::url::E_DECODED); 00689 00696 void 00697 setPathParams(const std::string ¶ms); 00698 00705 void 00706 setPathParamsVec(const zypp::url::ParamVec &pvec); 00707 00714 void 00715 setPathParamsMap(const zypp::url::ParamMap &pmap); 00716 00726 void 00727 setPathParam(const std::string ¶m, const std::string &value); 00728 00729 00730 // ----------------- 00737 void 00738 setQueryString(const std::string &querystr); 00739 00746 void 00747 setQueryStringVec(const zypp::url::ParamVec &qvec); 00748 00755 void 00756 setQueryStringMap(const zypp::url::ParamMap &qmap); 00757 00767 void 00768 setQueryParam(const std::string ¶m, const std::string &value); 00769 00778 void 00779 delQueryParam(const std::string ¶m); 00780 00781 00782 // ----------------- 00790 void 00791 setFragment(const std::string &fragment, 00792 EEncoding eflag = zypp::url::E_DECODED); 00793 00794 00795 // ----------------- 00804 ViewOptions 00805 getViewOptions() const; 00806 00815 void 00816 setViewOptions(const ViewOptions &vopts); 00817 00818 private: 00819 url::UrlRef m_impl; 00820 }; 00821 00822 std::ostream & operator<<( std::ostream & str, const Url & url ); 00823 00827 bool operator<( const Url &lhs, const Url &rhs ); 00828 00832 bool operator==( const Url &lhs, const Url &rhs ); 00833 00834 00835 bool operator!=( const Url &lhs, const Url &rhs ); 00836 00838 } // namespace zypp 00840 00841 #endif /* ZYPP_URL_H */ 00842 /* 00843 ** vim: set ts=2 sts=2 sw=2 ai et: 00844 */