10Duke Scale C++ Client
Loading...
Searching...
No Matches
HTTPRequestBuilder.h
1#ifndef TENDUKE_HTTP_HTTPREQUESTBUILDER_H
2#define TENDUKE_HTTP_HTTPREQUESTBUILDER_H
3
4#include "./HTTPRequest.h"
5#include "./HTTPRequestAuthenticator.h"
6#include "net/URL.h"
7#include "net/URLBuilder.h"
8#include "net/URLs.h"
9
10#include <string>
11#include <memory>
12#include <map>
13
14namespace tenduke { namespace http {
15
16class HTTPCall;
17class HTTPClient;
18
23{
24public:
32 explicit HTTPRequestBuilder(
33 const ::tenduke::net::URLs &urls,
34 tenduke::http::HTTPClient * client = nullptr,
35 long connectionTimeoutMs = tenduke::http::DEFAULT_CONNECTION_TIMEOUT_MS,
37 );
38
43 std::unique_ptr<HTTPRequest> build();
44
53 std::unique_ptr<HTTPCall> call();
54
60
66
73 HTTPRequestBuilder & url(const std::string &url);
74
80 HTTPRequestBuilder & url(const ::tenduke::net::URL &url);
81
87 HTTPRequestBuilder & authenticateWith(const std::shared_ptr<const tenduke::http::HTTPRequestAuthenticator> &requestAuthenticator);
88
96 HTTPRequestBuilder & header(const std::string &name, const std::string &value, bool skipIfValueEmpty = true);
97
104 HTTPRequestBuilder & formParameter(const std::string &name, const std::string &value);
105
111 HTTPRequestBuilder & contentType(const std::string &contentType);
112
118 HTTPRequestBuilder & charset(const std::string &charset);
119
126
132 HTTPRequestBuilder & body(const std::string &requestEntity);
133
139
145 ::tenduke::net::URLBuilder createURL(const ::tenduke::net::URL &url) const;
146
152 ::tenduke::net::URLBuilder createURL(const std::string &url) const;
153
154protected:
159
160private:
161 const tenduke::http::HTTPClient * client;
162
163 std::string method;
164 std::string requestEntity; // aka body
166 std::shared_ptr<const tenduke::http::HTTPRequestAuthenticator> requestAuthenticator;
167 std::multimap<std::string, std::string> headers;
168 std::multimap<std::string, std::string> formParameters;
169 std::string requestContentType;
170 std::string requestCharset;
171
172 long connectionTimeoutMs;
173 long timeoutMs;
174
175 const ::tenduke::net::URLs &urls;
176};
177
178
179}}
180
181#endif // TENDUKE_HTTP_HTTPREQUESTBUILDER_H
HTTPRequestBuilder & contentType(const std::string &contentType)
Sets content-type.
Definition HTTPRequestBuilder.cpp:141
HTTPRequestBuilder & charset(const std::string &charset)
Sets character set.
Definition HTTPRequestBuilder.cpp:147
HTTPRequestBuilder(const ::tenduke::net::URLs &urls, tenduke::http::HTTPClient *client=nullptr, long connectionTimeoutMs=tenduke::http::DEFAULT_CONNECTION_TIMEOUT_MS, long timeoutMs=tenduke::http::DEFAULT_TIMEOUT_MS)
Constructs new instance.
Definition HTTPRequestBuilder.cpp:15
HTTPRequestBuilder & url(const std::string &url)
Sets the request URL.
Definition HTTPRequestBuilder.cpp:96
HTTP-call which executes the request and returns HTTPResponse.
Definition HTTPCall.h:15
A simple HTTP-client.
Definition HTTPClient.h:19
HTTPRequestBuilder & get()
Sets the method to GET.
Definition HTTPRequestBuilder.cpp:84
HTTPRequestBuilder & body(const std::string &requestEntity)
Sets body as string.
Definition HTTPRequestBuilder.cpp:114
HTTPRequestBuilder & contentType(const std::string &contentType)
Sets content-type.
Definition HTTPRequestBuilder.cpp:141
HTTPRequestBuilder & formParameter(const std::string &name, const std::string &value)
Adds form-parameter to the request.
Definition HTTPRequestBuilder.cpp:121
HTTPRequestBuilder & post()
Sets the method to POST.
Definition HTTPRequestBuilder.cpp:90
std::unique_ptr< HTTPRequest > build()
Builds the request.
Definition HTTPRequestBuilder.cpp:26
HTTPRequestBuilder & header(const std::string &name, const std::string &value, bool skipIfValueEmpty=true)
Adds header to the request.
Definition HTTPRequestBuilder.cpp:129
HTTPRequestBuilder & charset(const std::string &charset)
Sets character set.
Definition HTTPRequestBuilder.cpp:147
std::unique_ptr< HTTPCall > call()
Builds the request, and builds the call in one call.
Definition HTTPRequestBuilder.cpp:56
std::string buildMessageBodyFromFormParameters()
Builds the message body from form-parameters.
Definition HTTPRequestBuilder.cpp:65
HTTPRequestBuilder & authenticateWith(const std::shared_ptr< const tenduke::http::HTTPRequestAuthenticator > &requestAuthenticator)
Sets the request authenticator.
Definition HTTPRequestBuilder.cpp:108
HTTPRequestBuilder & utf8()
Sets the character set to UTF-8.
Definition HTTPRequestBuilder.cpp:153
tenduke::net::URLBuilder createURL() const
Starts URL-building.
Definition HTTPRequestBuilder.cpp:158
HTTPRequestBuilder(const ::tenduke::net::URLs &urls, tenduke::http::HTTPClient *client=nullptr, long connectionTimeoutMs=tenduke::http::DEFAULT_CONNECTION_TIMEOUT_MS, long timeoutMs=tenduke::http::DEFAULT_TIMEOUT_MS)
Constructs new instance.
Definition HTTPRequestBuilder.cpp:15
HTTPRequestBuilder & url(const std::string &url)
Sets the request URL.
Definition HTTPRequestBuilder.cpp:96
Very simple URL-builder.
Definition URLBuilder.h:23
Represents URL.
Definition URL.h:21
HTTP-related services.
Definition BadRequest.h:6
const long DEFAULT_CONNECTION_TIMEOUT_MS
Default connection time out in milliseconds.
Definition HTTPRequest.h:14
const long DEFAULT_TIMEOUT_MS
Default total time out in milliseconds.
Definition HTTPRequest.h:17
Root for classes, functions and globals of 10Duke C++ Client.
Definition AbstractClientFactory.h:16