libzypp  11.13.5
UrlBase.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_URL_URLBASE_H
13 #define ZYPP_URL_URLBASE_H
14 
15 #include "zypp/url/UrlUtils.h"
16 #include "zypp/base/PtrTypes.h"
17 
18 
20 namespace zypp
21 {
22 
24  namespace url
25  {
26 
27 
28  // ---------------------------------------------------------------
39  struct ViewOption
40  {
51  static const ViewOption WITH_SCHEME;
58  static const ViewOption WITH_USERNAME;
67  static const ViewOption WITH_PASSWORD;
74  static const ViewOption WITH_HOST;
81  static const ViewOption WITH_PORT;
87  static const ViewOption WITH_PATH_NAME;
107  static const ViewOption WITH_FRAGMENT;
177  static const ViewOption DEFAULTS;
184  ViewOption();
185 
186 
192  friend inline ViewOption
193  operator + (const ViewOption &l, const ViewOption &r)
194  {
195  return ViewOption(l.opt | r.opt);
196  }
197 
203  friend inline ViewOption
204  operator - (const ViewOption &l, const ViewOption &r)
205  {
206  return ViewOption(l.opt & ~r.opt);
207  }
208 
215  inline ViewOption &
217  {
218  opt = o.opt; return *this;
219  }
220 
227  inline bool
228  has(const ViewOption &o) const
229  {
230  return o.opt & opt;
231  }
232 
233  private:
234  ViewOption(int option);
235  int opt;
236  };
237 
238 
239  // ---------------------------------------------------------------
244 
245 
246  // ---------------------------------------------------------------
250  typedef std::vector<std::string> UrlSchemes;
251 
252 
253  // ---------------------------------------------------------------
257  class UrlBaseData;
258 
259 
260  // ---------------------------------------------------------------
269  class UrlBase
270  {
271  public:
272 
273  virtual
274  ~UrlBase();
275 
276  UrlBase();
277 
282  UrlBase(const UrlBase &url);
283 
298  UrlBase(const std::string &scheme,
299  const std::string &authority,
300  const std::string &pathdata,
301  const std::string &querystr,
302  const std::string &fragment);
303 
304 
305  // -----------------
309  virtual void
310  clear();
311 
323  virtual UrlBase *
324  clone() const;
325 
339  virtual void
340  init(const std::string &scheme,
341  const std::string &authority,
342  const std::string &pathdata,
343  const std::string &querystr,
344  const std::string &fragment);
345 
346 
347  // -----------------
365  virtual UrlSchemes
366  getKnownSchemes() const;
367 
372  virtual bool
373  isKnownScheme(const std::string &scheme) const;
374 
375 
388  virtual bool
389  isValidScheme(const std::string &scheme) const;
390 
400  virtual bool
401  isValid() const;
402 
403 
404  // -----------------
412  virtual std::string
413  asString() const;
414 
427  virtual std::string
428  asString(const zypp::url::ViewOptions &opts) const;
429 
430 
431  // -----------------
436  virtual std::string
437  getScheme() const;
438 
439 
440  // -----------------
450  virtual std::string
451  getAuthority() const;
452 
460  virtual std::string
461  getUsername(EEncoding eflag) const;
462 
470  virtual std::string
471  getPassword(EEncoding eflag) const;
472 
485  virtual std::string
486  getHost(EEncoding eflag) const;
487 
492  virtual std::string
493  getPort() const;
494 
495 
496  // -----------------
506  virtual std::string
507  getPathData() const;
508 
517  virtual std::string
518  getPathName(EEncoding eflag) const;
519 
524  virtual std::string
525  getPathParams() const;
526 
539  virtual zypp::url::ParamVec
540  getPathParamsVec() const;
541 
561  virtual zypp::url::ParamMap
562  getPathParamsMap(EEncoding eflag) const;
563 
580  virtual std::string
581  getPathParam(const std::string &param, EEncoding eflag) const;
582 
583 
584  // -----------------
594  virtual std::string
595  getQueryString() const;
596 
610  virtual zypp::url::ParamVec
611  getQueryStringVec() const;
612 
631  virtual zypp::url::ParamMap
632  getQueryStringMap(EEncoding eflag) const;
633 
650  virtual std::string
651  getQueryParam(const std::string &param, EEncoding eflag) const;
652 
653 
654  // -----------------
662  virtual std::string
663  getFragment(EEncoding eflag) const;
664 
665 
666  // -----------------
673  virtual void
674  setScheme(const std::string &scheme);
675 
676 
677  // -----------------
691  virtual void
692  setAuthority(const std::string &authority);
693 
703  virtual void
704  setUsername(const std::string &user,
705  EEncoding eflag);
706 
716  virtual void
717  setPassword(const std::string &pass,
718  EEncoding eflag);
719 
740  virtual void
741  setHost(const std::string &host);
742 
750  virtual void
751  setPort(const std::string &port);
752 
753 
754  // -----------------
765  virtual void
766  setPathData(const std::string &pathdata);
767 
775  virtual void
776  setPathName(const std::string &path,
777  EEncoding eflag);
778 
785  virtual void
786  setPathParams(const std::string &params);
787 
794  virtual void
796 
803  virtual void
805 
815  virtual void
816  setPathParam(const std::string &param, const std::string &value);
817 
818 
819  // -----------------
832  virtual void
833  setQueryString(const std::string &querystr);
834 
841  virtual void
843 
850  virtual void
852 
862  virtual void
863  setQueryParam(const std::string &param, const std::string &value);
864 
873  virtual void
874  delQueryParam(const std::string &param);
875 
876 
877  // -----------------
885  virtual void
886  setFragment(const std::string &fragment,
887  EEncoding eflag);
888 
889 
890  // -----------------
946  virtual void
947  configure();
948 
949 
960  std::string
961  config(const std::string &opt) const;
962 
972  void
973  config(const std::string &opt, const std::string &val);
974 
975 
985  getViewOptions() const;
986 
995  void
996  setViewOptions(const ViewOptions &vopts);
997 
998 
999  protected:
1026  virtual std::string
1027  cleanupPathName(const std::string &path, bool authority) const;
1028 
1039  virtual std::string
1040  cleanupPathName(const std::string &path) const;
1041 
1063  virtual bool
1064  isValidHost(const std::string &host) const;
1065 
1072  virtual bool
1073  isValidPort(const std::string &port) const;
1074 
1075  private:
1077  };
1078 
1079 
1080  // ---------------------------------------------------------------
1085 
1086 
1088  } // namespace url
1090 
1092 } // namespace zypp
1094 
1095 #endif /* ZYPP_URL_URLBASE_H */
1096 /*
1097 ** vim: set ts=2 sts=2 sw=2 ai et:
1098 */