libfilezilla
Toggle main menu visibility
Loading...
Searching...
No Matches
lib
libfilezilla
uri.hpp
Go to the documentation of this file.
1
#ifndef LIBFILEZILLA_URI_HEADER
2
#define LIBFILEZILLA_URI_HEADER
3
4
#include "
libfilezilla.hpp
"
5
6
#include <initializer_list>
7
#include <map>
8
#include <string>
9
13
14
namespace
fz
{
15
16
enum class
uri_parsing_flags
17
{
18
normal,
19
21
assume_authority
22
};
23
29
class
FZ_PUBLIC_SYMBOL uri final
30
{
31
public
:
32
uri()
noexcept
=
default
;
33
explicit
uri(std::string_view
const
& in,
uri_parsing_flags
flags = {});
34
35
void
clear();
36
43
bool
parse
(std::string_view in,
uri_parsing_flags
flags = {});
44
51
std::string
to_string
(
bool
with_query =
true
)
const
;
52
54
std::string
get_request
(
bool
with_query =
true
)
const
;
55
58
std::string
get_authority
(
bool
with_userinfo)
const
;
59
60
bool
empty()
const
;
61
explicit
operator
bool()
const
{
return
!empty(); }
62
64
std::string
scheme_
;
65
67
std::string
user_
;
68
70
std::string
pass_
;
71
73
std::string
host_
;
74
76
unsigned
short
port_
{};
77
79
std::string
path_
;
80
88
std::string
query_
;
89
95
std::string
fragment_
;
96
98
bool
is_absolute
()
const
{
return
path_
[0] ==
'/'
; }
99
105
void
resolve
(uri
const
& base);
106
107
bool
operator==(uri
const
& arg)
const
;
108
109
bool
operator!=(uri
const
& arg)
const
{
return
!(*
this
== arg); }
110
111
private
:
112
bool
FZ_PRIVATE_SYMBOL parse_authority(std::string_view authority);
113
};
114
120
class
FZ_PUBLIC_SYMBOL query_string final
121
{
122
public
:
123
explicit
query_string() =
default
;
124
explicit
query_string(std::string_view
const
& raw,
bool
plus_is_space =
false
);
125
explicit
query_string(std::pair<std::string, std::string>
const
& segment);
126
explicit
query_string(std::initializer_list<std::pair<std::string, std::string>>
const
& segments);
127
bool
set(std::string_view
const
& raw,
bool
plus_is_space =
false
);
128
129
std::string to_string(
bool
encode_slashes)
const
;
130
131
void
remove(std::string
const
& key);
132
std::string& operator[](std::string
const
& key);
133
134
std::map<std::string, std::string, less_insensitive_ascii>
const
& pairs()
const
{
return
segments_; }
135
136
bool
empty()
const
{
return
segments_.empty(); }
137
138
private
:
139
std::map<std::string, std::string, less_insensitive_ascii> segments_;
140
};
141
142
}
143
144
#endif
fz::uri::get_authority
std::string get_authority(bool with_userinfo) const
Returns [user[:pass]]host[:port] Keeps valid bracketed IPv6 literals unchanged; percent-encodes other...
fz::uri::user_
std::string user_
Optional user part of the authority.
Definition
uri.hpp:67
fz::uri::query_
std::string query_
The part of a URI after ? but before #.
Definition
uri.hpp:88
fz::uri::get_request
std::string get_request(bool with_query=true) const
Returns path and query, separated by question mark.
fz::uri::pass_
std::string pass_
Optional password part of the authority.
Definition
uri.hpp:70
fz::uri::to_string
std::string to_string(bool with_query=true) const
Assembles components into string.
fz::uri::scheme_
std::string scheme_
Often referred to as the protocol prefix, e.g. ftp://.
Definition
uri.hpp:64
fz::uri::path_
std::string path_
Optional path, must start with a slash if set.
Definition
uri.hpp:79
fz::uri::fragment_
std::string fragment_
The part of a URI after #.
Definition
uri.hpp:95
fz::uri::port_
unsigned short port_
Optional Port if non-zero.
Definition
uri.hpp:76
fz::uri::resolve
void resolve(uri const &base)
Resolve a relative URI reference into an absolute URI given a base URL.
fz::uri::is_absolute
bool is_absolute() const
Checks that the URI is absolute, that is the path starting with a slash.
Definition
uri.hpp:98
fz::uri::parse
bool parse(std::string_view in, uri_parsing_flags flags={})
Splits uri into components.
fz::uri::host_
std::string host_
Hostname, or IP address literal.
Definition
uri.hpp:73
libfilezilla.hpp
Sets some global macros and further includes string.hpp.
fz
The namespace used by libfilezilla.
Definition
apply.hpp:17
fz::uri_parsing_flags
uri_parsing_flags
Definition
uri.hpp:17
fz::uri_parsing_flags::assume_authority
@ assume_authority
If parsing a schemeless URI, assume it has an authority, otherwise it's all seen as path.
Definition
uri.hpp:21
Generated by
1.18.0