This commit is contained in:
Guillaume Tassery 2019-09-26 05:34:22 +02:00
parent 367a0dcdb4
commit 647568a6f6
4 changed files with 23 additions and 23 deletions

View File

@ -38,23 +38,23 @@ HTTPDictionarySource::HTTPDictionarySource(
if (config.has(credentials_prefix))
{
this->credentials.setUsername(config.getString(credentials_prefix + ".user", ""));
this->credentials.setPassword(config.getString(credentials_prefix + ".password", ""));
credentials.setUsername(config.getString(credentials_prefix + ".user", ""));
credentials.setPassword(config.getString(credentials_prefix + ".password", ""));
}
const auto & http_headers_prefix = config_prefix + ".http-headers";
const auto & headers_prefix = config_prefix + ".headers";
if (config.has(http_headers_prefix))
if (config.has(headers_prefix))
{
Poco::Util::AbstractConfiguration::Keys config_keys;
config.keys(http_headers_prefix, config_keys);
config.keys(headers_prefix, config_keys);
this->header_entries.reserve(config_keys.size());
header_entries.reserve(config_keys.size());
for (const auto & key : config_keys)
{
const auto header_key = config.getString(http_headers_prefix + "." + key + ".name", "");
const auto header_value = config.getString(http_headers_prefix + "." + key + ".value", "");
this->header_entries.emplace_back(std::make_tuple(header_key, header_value));
const auto header_key = config.getString(headers_prefix + "." + key + ".name", "");
const auto header_value = config.getString(headers_prefix + "." + key + ".value", "");
header_entries.emplace_back(std::make_tuple(header_key, header_value));
}
}
}
@ -71,8 +71,8 @@ HTTPDictionarySource::HTTPDictionarySource(const HTTPDictionarySource & other)
, context(other.context)
, timeouts(ConnectionTimeouts::getHTTPTimeouts(context))
{
this->credentials.setUsername(other.credentials.getUsername());
this->credentials.setPassword(other.credentials.getPassword());
credentials.setUsername(other.credentials.getUsername());
credentials.setPassword(other.credentials.getPassword());
}
void HTTPDictionarySource::getUpdateFieldAndDate(Poco::URI & uri)
@ -101,7 +101,7 @@ BlockInputStreamPtr HTTPDictionarySource::loadAll()
Poco::URI uri(url);
auto in_ptr = std::make_unique<ReadWriteBufferFromHTTP>(
uri, Poco::Net::HTTPRequest::HTTP_GET, ReadWriteBufferFromHTTP::OutStreamCallback(), timeouts,
0, this->credentials, DBMS_DEFAULT_BUFFER_SIZE, this->header_entries);
0, credentials, DBMS_DEFAULT_BUFFER_SIZE, header_entries);
auto input_stream = context.getInputFormat(format, *in_ptr, sample_block, max_block_size);
return std::make_shared<OwningBlockInputStream<ReadWriteBufferFromHTTP>>(input_stream, std::move(in_ptr));
}
@ -113,7 +113,7 @@ BlockInputStreamPtr HTTPDictionarySource::loadUpdatedAll()
LOG_TRACE(log, "loadUpdatedAll " + uri.toString());
auto in_ptr = std::make_unique<ReadWriteBufferFromHTTP>(
uri, Poco::Net::HTTPRequest::HTTP_GET, ReadWriteBufferFromHTTP::OutStreamCallback(), timeouts,
0, this->credentials, DBMS_DEFAULT_BUFFER_SIZE, this->header_entries);
0, credentials, DBMS_DEFAULT_BUFFER_SIZE, header_entries);
auto input_stream = context.getInputFormat(format, *in_ptr, sample_block, max_block_size);
return std::make_shared<OwningBlockInputStream<ReadWriteBufferFromHTTP>>(input_stream, std::move(in_ptr));
}
@ -132,7 +132,7 @@ BlockInputStreamPtr HTTPDictionarySource::loadIds(const std::vector<UInt64> & id
Poco::URI uri(url);
auto in_ptr = std::make_unique<ReadWriteBufferFromHTTP>(
uri, Poco::Net::HTTPRequest::HTTP_POST, out_stream_callback, timeouts,
0, this->credentials, DBMS_DEFAULT_BUFFER_SIZE, this->header_entries);
0, credentials, DBMS_DEFAULT_BUFFER_SIZE, header_entries);
auto input_stream = context.getInputFormat(format, *in_ptr, sample_block, max_block_size);
return std::make_shared<OwningBlockInputStream<ReadWriteBufferFromHTTP>>(input_stream, std::move(in_ptr));
}
@ -151,7 +151,7 @@ BlockInputStreamPtr HTTPDictionarySource::loadKeys(const Columns & key_columns,
Poco::URI uri(url);
auto in_ptr = std::make_unique<ReadWriteBufferFromHTTP>(
uri, Poco::Net::HTTPRequest::HTTP_POST, out_stream_callback, timeouts,
0, this->credentials, DBMS_DEFAULT_BUFFER_SIZE, this->header_entries);
0, credentials, DBMS_DEFAULT_BUFFER_SIZE, header_entries);
auto input_stream = context.getInputFormat(format, *in_ptr, sample_block, max_block_size);
return std::make_shared<OwningBlockInputStream<ReadWriteBufferFromHTTP>>(input_stream, std::move(in_ptr));
}

View File

@ -59,7 +59,7 @@ private:
const DictionaryStructure dict_struct;
const std::string url;
Poco::Net::HTTPBasicCredentials credentials;
ReadWriteBufferFromHTTP::HttpHeaderEntries header_entries;
ReadWriteBufferFromHTTP::HTTPHeaderEntries header_entries;
std::string update_field;
const std::string format;
Block sample_block;

View File

@ -87,8 +87,8 @@ namespace detail
class ReadWriteBufferFromHTTPBase : public ReadBuffer
{
public:
using HttpHeaderEntry = std::tuple<std::string, std::string>;
using HttpHeaderEntries = std::vector<HttpHeaderEntry>;
using HTTPHeaderEntry = std::tuple<std::string, std::string>;
using HTTPHeaderEntries = std::vector<HTTPHeaderEntry>;
protected:
Poco::URI uri;
@ -100,7 +100,7 @@ namespace detail
std::function<void(std::ostream &)> out_stream_callback;
const Poco::Net::HTTPBasicCredentials & credentials;
std::vector<Poco::Net::HTTPCookie> cookies;
HttpHeaderEntries http_header_entries;
HTTPHeaderEntries http_header_entries;
std::istream * call(const Poco::URI uri_, Poco::Net::HTTPResponse & response)
{
@ -157,7 +157,7 @@ namespace detail
OutStreamCallback out_stream_callback_ = {},
const Poco::Net::HTTPBasicCredentials & credentials_ = {},
size_t buffer_size_ = DBMS_DEFAULT_BUFFER_SIZE,
HttpHeaderEntries http_header_entries_ = {})
HTTPHeaderEntries http_header_entries_ = {})
: ReadBuffer(nullptr, 0)
, uri {uri_}
, method {!method_.empty() ? method_ : out_stream_callback_ ? Poco::Net::HTTPRequest::HTTP_POST : Poco::Net::HTTPRequest::HTTP_GET}
@ -243,7 +243,7 @@ public:
const DB::SettingUInt64 max_redirects = 0,
const Poco::Net::HTTPBasicCredentials & credentials_ = {},
size_t buffer_size_ = DBMS_DEFAULT_BUFFER_SIZE,
const HttpHeaderEntries & http_header_entries_ = {})
const HTTPHeaderEntries & http_header_entries_ = {})
: Parent(std::make_shared<UpdatableSession>(uri_, timeouts, max_redirects), uri_, method_, out_stream_callback_, credentials_, buffer_size_, http_header_entries_)
{
}

View File

@ -104,10 +104,10 @@ Setting fields:
- `url` The source URL.
- `format` The file format. All the formats described in "[Formats](../../interfaces/formats.md#formats)" are supported.
- `credentials` Basic HTTP authentification.
- `credentials` Basic HTTP authentification. Optional parameter.
- `user` Username required for the authentification.
- `password` Password required for the authentification.
- `http-headers` All custom HTTP headers entries used for the HTTP request.
- `headers` All custom HTTP headers entries used for the HTTP request. Optional parameter.
- `http-header` Single HTTP header entry.
- `key` Identifiant name used for the header send on the request.
- `value` Value set for a specific identifiant name.