1.10
uri.h
1/*
2 * Copyright (C) 2018 Microchip Technology Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6#ifndef EGT_URI_H
7#define EGT_URI_H
8
14#include <egt/detail/meta.h>
15#include <string>
16
17namespace egt
18{
19inline namespace v1
20{
21
29class EGT_API Uri
30{
31public:
32
33 Uri() = default;
34
40 // cppcheck-suppress noExplicitConstructor
41 explicit Uri(const std::string& uri);
42
44 EGT_NODISCARD const std::string& scheme() const { return m_scheme; }
46 EGT_NODISCARD const std::string& host() const { return m_host; }
48 EGT_NODISCARD const std::string& port() const { return m_port; }
50 EGT_NODISCARD const std::string& path() const { return m_path; }
52 EGT_NODISCARD const std::string& query() const { return m_query; }
54 EGT_NODISCARD const std::string& fragment() const { return m_fragment; }
56 EGT_NODISCARD const std::string& icon_size() const { return m_icon_size; }
57
59 EGT_NODISCARD bool is_valid() const;
60
62 EGT_NODISCARD std::string to_string() const;
63
65 explicit operator std::string() const
66 {
67 return to_string();
68 }
69
71 void set(const std::string& uri)
72 {
73 parse(uri);
74 }
75
76private:
77
78 void clear();
79 void parse(const std::string& uri);
80
81 std::string m_scheme;
82 std::string m_host;
83 std::string m_port;
84 std::string m_path;
85 std::string m_query;
86 std::string m_fragment;
87 std::string m_icon_size;
88};
89
90}
91}
92
93#endif
A URI (Universal Resource Identifier) parser/builder that aims to be RFC 3986 compliant.
Definition uri.h:30
EGT_NODISCARD bool is_valid() const
Is the URI syntactically valid.
EGT_NODISCARD const std::string & port() const
Get the port part of the URI.
Definition uri.h:48
EGT_NODISCARD std::string to_string() const
Convert the URI to a string.
EGT_NODISCARD const std::string & query() const
Get the query part of the URI.
Definition uri.h:52
EGT_NODISCARD const std::string & host() const
Get the host part of the URI.
Definition uri.h:46
Uri()=default
EGT_NODISCARD const std::string & icon_size() const
Get the icon size of the URI.
Definition uri.h:56
EGT_NODISCARD const std::string & fragment() const
Get the fragment part of the URI.
Definition uri.h:54
void set(const std::string &uri)
Set the URI from a string.
Definition uri.h:71
Uri(const std::string &uri)
Construct a URI from a string.
EGT_NODISCARD const std::string & path() const
Get the path part of the URI.
Definition uri.h:50
EGT_NODISCARD const std::string & scheme() const
Get the scheme part of the URI.
Definition uri.h:44
EGT framework namespace.
Definition animation.h:24