IOLink  IOL_v1.2.0_release
Uri.h
1 #pragma once
2 #include <iolink/IOLinkAPI.h>
3 
4 #include <string>
5 
6 namespace iolink
7 {
8 
13 class IOLINK_API Uri final
14 {
15 public:
19  explicit Uri(const std::string& uri);
20 
21  Uri() = delete;
22 
26  Uri(const Uri& other);
27  Uri& operator=(Uri rhs);
28 
32  ~Uri();
33 
37  std::string scheme() const;
38 
42  std::string authority() const;
43 
47  std::string host() const;
48 
52  uint16_t port() const;
53 
57  std::string userInfo() const;
58 
62  std::string path() const;
63 
67  std::string query() const;
68 
72  std::string pathAndQuery() const;
73 
77  std::string toString() const;
78 
79 private:
80  // Internal implementation class
81  class Impl;
82 
83  // Pointer to the internal implementation
84  Impl* m_pimpl;
85 };
86 
87 } // end namespace iolink