libzypp 8.13.6
|
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 00083 class Url 00084 { 00085 public: 00089 typedef zypp::url::EEncoding EEncoding; 00090 00094 typedef zypp::url::ViewOptions ViewOptions; 00095 00096 00097 ~Url(); 00098 Url(); 00099 00110 Url(const Url &url); 00111 00112 00123 Url(const zypp::url::UrlRef &url); 00124 00125 00139 Url(const std::string &encodedUrl); 00140 00141 00142 // ----------------- 00159 static url::UrlRef 00160 parseUrl(const std::string &encodedUrl); 00161 00162 00163 // ----------------- 00178 Url& 00179 operator = (const std::string &encodedUrl); 00180 00181 00192 Url& 00193 operator = (const Url &url); 00194 00195 00196 // ----------------- 00204 static bool 00205 registerScheme(const std::string &scheme, 00206 url::UrlRef urlImpl); 00207 00212 static zypp::url::UrlSchemes 00213 getRegisteredSchemes(); 00214 00219 static bool 00220 isRegisteredScheme(const std::string &scheme); 00221 00222 00223 // ----------------- 00228 zypp::url::UrlSchemes 00229 getKnownSchemes() const; 00230 00231 00246 bool 00247 isValidScheme(const std::string &scheme) const; 00248 00249 00251 static bool schemeIsLocal( const std::string & scheme_r ); 00253 bool schemeIsLocal() const { return schemeIsLocal( getScheme() ); } 00254 00256 static bool schemeIsRemote( const std::string & scheme_r ); 00258 bool schemeIsRemote() const { return schemeIsRemote( getScheme() ); } 00259 00261 static bool schemeIsVolatile( const std::string & scheme_r ); 00263 bool schemeIsVolatile() const { return schemeIsVolatile( getScheme() ); } 00264 00266 static bool schemeIsDownloading( const std::string & scheme_r ); 00268 bool schemeIsDownloading() const { return schemeIsDownloading( getScheme() ); } 00269 00279 bool 00280 isValid() const; 00281 00282 00283 // ----------------- 00291 std::string 00292 asString() const; 00293 00306 std::string 00307 asString(const ViewOptions &opts) const; 00308 00318 std::string 00319 asCompleteString() const; 00320 00321 00322 // ----------------- 00327 std::string 00328 getScheme() const; 00329 00330 00331 // ----------------- 00341 std::string 00342 getAuthority() const; 00343 00351 std::string 00352 getUsername(EEncoding eflag = zypp::url::E_DECODED) const; 00353 00361 std::string 00362 getPassword(EEncoding eflag = zypp::url::E_DECODED) const; 00363 00367 bool hasCredentialsInAuthority() const 00368 { return ! ( getUsername().empty() || getPassword().empty() ); } 00369 00382 std::string 00383 getHost(EEncoding eflag = zypp::url::E_DECODED) const; 00384 00389 std::string 00390 getPort() const; 00391 00392 00393 // ----------------- 00403 std::string 00404 getPathData() const; 00405 00414 std::string 00415 getPathName(EEncoding eflag = zypp::url::E_DECODED) const; 00416 00421 std::string 00422 getPathParams() const; 00423 00436 zypp::url::ParamVec 00437 getPathParamsVec() const; 00438 00458 zypp::url::ParamMap 00459 getPathParamsMap(EEncoding eflag = zypp::url::E_DECODED) const; 00460 00477 std::string 00478 getPathParam(const std::string ¶m, 00479 EEncoding eflag = zypp::url::E_DECODED) const; 00480 00481 00482 // ----------------- 00492 std::string 00493 getQueryString() const; 00494 00508 zypp::url::ParamVec 00509 getQueryStringVec() const; 00510 00529 zypp::url::ParamMap 00530 getQueryStringMap(EEncoding eflag = zypp::url::E_DECODED) const; 00531 00548 std::string 00549 getQueryParam(const std::string ¶m, 00550 EEncoding eflag = zypp::url::E_DECODED) const; 00551 00552 00553 // ----------------- 00561 std::string 00562 getFragment(EEncoding eflag = zypp::url::E_DECODED) const; 00563 00564 00565 // ----------------- 00572 void 00573 setScheme(const std::string &scheme); 00574 00575 00576 // ----------------- 00590 void 00591 setAuthority(const std::string &authority); 00592 00602 void 00603 setUsername(const std::string &user, 00604 EEncoding eflag = zypp::url::E_DECODED); 00605 00615 void 00616 setPassword(const std::string &pass, 00617 EEncoding eflag = zypp::url::E_DECODED); 00618 00639 void 00640 setHost(const std::string &host); 00641 00649 void 00650 setPort(const std::string &port); 00651 00652 00653 // ----------------- 00664 void 00665 setPathData(const std::string &pathdata); 00666 00674 void 00675 setPathName(const std::string &path, 00676 EEncoding eflag = zypp::url::E_DECODED); 00677 00684 void 00685 setPathParams(const std::string ¶ms); 00686 00693 void 00694 setPathParamsVec(const zypp::url::ParamVec &pvec); 00695 00702 void 00703 setPathParamsMap(const zypp::url::ParamMap &pmap); 00704 00714 void 00715 setPathParam(const std::string ¶m, const std::string &value); 00716 00717 00718 // ----------------- 00725 void 00726 setQueryString(const std::string &querystr); 00727 00734 void 00735 setQueryStringVec(const zypp::url::ParamVec &qvec); 00736 00743 void 00744 setQueryStringMap(const zypp::url::ParamMap &qmap); 00745 00755 void 00756 setQueryParam(const std::string ¶m, const std::string &value); 00757 00766 void 00767 delQueryParam(const std::string ¶m); 00768 00769 00770 // ----------------- 00778 void 00779 setFragment(const std::string &fragment, 00780 EEncoding eflag = zypp::url::E_DECODED); 00781 00782 00783 // ----------------- 00792 ViewOptions 00793 getViewOptions() const; 00794 00803 void 00804 setViewOptions(const ViewOptions &vopts); 00805 00806 private: 00807 url::UrlRef m_impl; 00808 }; 00809 00810 std::ostream & operator<<( std::ostream & str, const Url & url ); 00811 00815 bool operator<( const Url &lhs, const Url &rhs ); 00816 00820 bool operator==( const Url &lhs, const Url &rhs ); 00821 00822 00823 bool operator!=( const Url &lhs, const Url &rhs ); 00824 00826 } // namespace zypp 00828 00829 #endif /* ZYPP_URL_H */ 00830 /* 00831 ** vim: set ts=2 sts=2 sw=2 ai et: 00832 */