equal
deleted
inserted
replaced
23 #include <regex> |
23 #include <regex> |
24 #include <locale> |
24 #include <locale> |
25 #include <stdexcept> |
25 #include <stdexcept> |
26 |
26 |
27 #include <curl/curl.h> |
27 #include <curl/curl.h> |
|
28 #include <uuid/uuid.h> |
28 |
29 |
29 #include <relpipe/common/type/typedefs.h> |
30 #include <relpipe/common/type/typedefs.h> |
30 #include <relpipe/reader/TypeId.h> |
31 #include <relpipe/reader/TypeId.h> |
31 #include <relpipe/reader/handlers/RelationalReaderStringHandler.h> |
32 #include <relpipe/reader/handlers/RelationalReaderStringHandler.h> |
32 #include <relpipe/reader/handlers/AttributeMetadata.h> |
33 #include <relpipe/reader/handlers/AttributeMetadata.h> |
117 void appendRequestHeader(const relpipe::common::type::StringX& name, const relpipe::common::type::StringX& value) { |
118 void appendRequestHeader(const relpipe::common::type::StringX& name, const relpipe::common::type::StringX& value) { |
118 request.headers.push_back(convertor.to_bytes(name)); |
119 request.headers.push_back(convertor.to_bytes(name)); |
119 request.headers.push_back(convertor.to_bytes(value)); |
120 request.headers.push_back(convertor.to_bytes(value)); |
120 } |
121 } |
121 |
122 |
|
123 relpipe::common::type::StringX generateRequestId() { |
|
124 char buffer[37]; |
|
125 uuid_t uuid; |
|
126 uuid_generate_random(uuid); |
|
127 // uuid_generate_time(uuid); |
|
128 uuid_unparse_lower(uuid, buffer); |
|
129 return convertor.from_bytes(buffer); |
|
130 } |
|
131 |
122 public: |
132 public: |
123 |
133 |
124 HTTPHandler(shared_ptr<relpipe::writer::RelationalWriter> relationalWriter, Configuration configuration) : relationalWriter(relationalWriter), configuration(configuration) { |
134 HTTPHandler(shared_ptr<relpipe::writer::RelationalWriter> relationalWriter, Configuration configuration) : relationalWriter(relationalWriter), configuration(configuration) { |
125 } |
135 } |
126 |
136 |
187 |
197 |
188 if (currentAttributeIndex % currentReaderMetadata.size() == 0) { |
198 if (currentAttributeIndex % currentReaderMetadata.size() == 0) { |
189 currentAttributeIndex = 0; |
199 currentAttributeIndex = 0; |
190 std::shared_ptr<HTTPClient> http(HTTPClient::open()); |
200 std::shared_ptr<HTTPClient> http(HTTPClient::open()); |
191 |
201 |
|
202 if (requestId.empty()) requestId = generateRequestId(); |
|
203 |
192 for (const HeaderDefinition& h : requestHeaders) if (h.matches(requestId, convertor.from_bytes(request.url))) appendRequestHeader(h.name, h.value); |
204 for (const HeaderDefinition& h : requestHeaders) if (h.matches(requestId, convertor.from_bytes(request.url))) appendRequestHeader(h.name, h.value); |
193 |
205 |
194 std::string body; |
206 std::string body; |
195 relpipe::common::type::Integer responseCode = -1; |
207 relpipe::common::type::Integer responseCode = -1; |
196 |
208 |