10Duke Scale C++ Client
Loading...
Searching...
No Matches
URLBuilder.h
1#ifndef TENDUKE_NET_URLBUILDER_H
2#define TENDUKE_NET_URLBUILDER_H
3
4#include "./URL.h"
5
6#include <map>
7#include <memory>
8#include <string>
9#include <vector>
10
11namespace tenduke { namespace net {
12
13class URLCodec;
14
23{
24public:
28 explicit URLBuilder(const ::tenduke::net::URLCodec &urls);
29
36 const ::tenduke::net::URLCodec &urls,
37 const ::tenduke::net::URL *url
38 );
39
45
50 std::unique_ptr<::tenduke::net::URL> buildPtr();
51
56 std::string buildString();
57
58 URLBuilder &scheme(const char *scheme, std::size_t length);
59 URLBuilder &scheme(const std::string &scheme);
60 URLBuilder &username(const char *username, std::size_t length);
61 URLBuilder &username(const std::string &scheme);
62 URLBuilder &password(const char *password, std::size_t length);
63 URLBuilder &password(const std::string &password);
64 URLBuilder &hostname(const char *hostname, std::size_t length);
65 URLBuilder &hostname(const std::string &hostname);
66 URLBuilder &port(std::uint16_t port);
67
73 URLBuilder &path(const std::string &path);
74
80 URLBuilder &path(const char *path, std::size_t length);
81 URLBuilder &fragment(const char *fragment, std::size_t length);
82 URLBuilder &fragment(const std::string &fragment);
83
90 URLBuilder & appendPath(const std::string & pathComponent);
91
98 URLBuilder & baseURL(const ::tenduke::net::URL &url);
99
105 URLBuilder &queryParameter(const char * name);
106
112 URLBuilder &queryParameter(const std::string & name);
113
120 URLBuilder &queryParameter(const char * name, const char * value);
121
128 URLBuilder &queryParameter(const std::string &name, const std::string &value);
129
136 URLBuilder &queryParameter(const char *name, std::size_t length);
137
146 URLBuilder &queryParameter(const char *name, std::size_t nameLength, const char * value, std::size_t valueLength);
147
148
154 URLBuilder & queryParameters(const std::map<std::string, std::string> &pParameters);
155
164 URLBuilder & encodedQueryParameter(const char *name, const char * value);
165
174 URLBuilder & encodedQueryParameter(const std::string &name, const std::string &value ="");
175
185 const char *name,
186 std::size_t nameLength
187 );
188
200 const char *name,
201 std::size_t nameLength,
202 const char *value,
203 std::size_t valueLength
204 );
205
211 std::string pctEncode(const std::string &value) const;
212
213private:
214 void putParameter (const std::string &name, const std::string &value);
215
216private:
217 std::string schemeValue;
218 std::string usernameValue;
219 std::string passwordValue;
220 std::string hostnameValue;
221 std::uint16_t portValue;
222 std::string pathValue;
223 std::string fragmentValue;
224 std::vector<std::pair<std::string, std::string>> parameters;
225
226 const ::tenduke::net::URLCodec &urls;
227};
228
229}}
230
231#endif // TENDUKE_NET_URLBUILDER_H
std::string buildString()
Builds the URL directly into a string.
Definition URLBuilder.cpp:10
URLBuilder & queryParameters(const std::map< std::string, std::string > &pParameters)
Sets multiple query parameters.
Definition URLBuilder.cpp:294
URLBuilder & path(const std::string &path)
Sets the entire path: Overwrites any existing path.
Definition URLBuilder.cpp:150
std::string pctEncode(const std::string &value) const
Utility to PCT-encode a string.
Definition URLBuilder.cpp:364
URLBuilder & baseURL(const ::tenduke::net::URL &url)
Sets the base URL.
Definition URLBuilder.cpp:54
::tenduke::net::URL build()
Builds the URL.
Definition URLBuilder.cpp:25
URLBuilder(const ::tenduke::net::URLCodec &urls)
Constructs a new instance.
Definition URLBuilder.cpp:370
URLBuilder & encodedQueryParameter(const char *name, const char *value)
Adds an encoded query parameter.
Definition URLBuilder.cpp:303
URLBuilder & queryParameter(const char *name)
Adds query parameter without a value.
Definition URLBuilder.cpp:217
URLBuilder & appendPath(const std::string &pathComponent)
Appends a path component.
Definition URLBuilder.cpp:173
std::unique_ptr<::tenduke::net::URL > buildPtr()
Builds the URL into a pointer.
Definition URLBuilder.cpp:39
URL-related coding / encoding functionality.
Definition URLCodec.h:13
Represents URL.
Definition URL.h:21
Generic networking support.
Definition AbstractURLCodec.h:6
Root for classes, functions and globals of 10Duke C++ Client.
Definition AbstractClientFactory.h:16