libzypp 9.41.1

Url.h

Go to the documentation of this file.
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 &param,
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 &param,
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 &params);
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 &param, 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 &param, const std::string &value);
00769 
00778     void
00779     delQueryParam(const std::string &param);
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 */