mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 23:21:59 +00:00
Better handlers
This commit is contained in:
parent
61d8e27ea7
commit
1c4d4c8e54
@ -15,3 +15,4 @@
|
|||||||
#cmakedefine01 ENABLE_CLICKHOUSE_GIT_IMPORT
|
#cmakedefine01 ENABLE_CLICKHOUSE_GIT_IMPORT
|
||||||
#cmakedefine01 ENABLE_CLICKHOUSE_INSTALL
|
#cmakedefine01 ENABLE_CLICKHOUSE_INSTALL
|
||||||
#cmakedefine01 ENABLE_CLICKHOUSE_ODBC_BRIDGE
|
#cmakedefine01 ENABLE_CLICKHOUSE_ODBC_BRIDGE
|
||||||
|
#cmakedefine01 ENABLE_CLICKHOUSE_LIBRARY_BRIDGE
|
||||||
|
@ -17,11 +17,7 @@ namespace DB
|
|||||||
return std::make_unique<PingHandler>(keep_alive_timeout);
|
return std::make_unique<PingHandler>(keep_alive_timeout);
|
||||||
|
|
||||||
if (request.getMethod() == Poco::Net::HTTPRequest::HTTP_POST)
|
if (request.getMethod() == Poco::Net::HTTPRequest::HTTP_POST)
|
||||||
{
|
return std::make_unique<LibraryRequestHandler>(keep_alive_timeout, context);
|
||||||
/// Remove '/' in the beginning.
|
|
||||||
auto dictionary_id = uri.getPath().substr(1);
|
|
||||||
return std::make_unique<LibraryRequestHandler>(keep_alive_timeout, context, dictionary_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -53,10 +53,18 @@ void LibraryRequestHandler::handleRequest(HTTPServerRequest & request, HTTPServe
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!params.has("dictionary_id"))
|
||||||
|
{
|
||||||
|
processError(response, "No 'dictionary_id in request URL");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
std::string method = params.get("method");
|
std::string method = params.get("method");
|
||||||
LOG_TRACE(log, "Library method: '{}'", method);
|
std::string dictionary_id = params.get("dictionary_id");
|
||||||
|
LOG_TRACE(log, "Library method: '{}', dictionary id: {}", method, dictionary_id);
|
||||||
|
|
||||||
WriteBufferFromHTTPServerResponse out(response, request.getMethod() == Poco::Net::HTTPRequest::HTTP_HEAD, keep_alive_timeout);
|
WriteBufferFromHTTPServerResponse out(response, request.getMethod() == Poco::Net::HTTPRequest::HTTP_HEAD, keep_alive_timeout);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (method == "libNew")
|
if (method == "libNew")
|
||||||
@ -75,7 +83,6 @@ void LibraryRequestHandler::handleRequest(HTTPServerRequest & request, HTTPServe
|
|||||||
|
|
||||||
std::string library_path = params.get("library_path");
|
std::string library_path = params.get("library_path");
|
||||||
std::string library_settings = params.get("library_settings");
|
std::string library_settings = params.get("library_settings");
|
||||||
|
|
||||||
LOG_TRACE(log, "Library path: '{}', library_settings: '{}'", library_path, library_settings);
|
LOG_TRACE(log, "Library path: '{}', library_settings: '{}'", library_path, library_settings);
|
||||||
|
|
||||||
bool res = SharedLibraryHandlerFactory::instance().create(dictionary_id, library_path, library_settings);
|
bool res = SharedLibraryHandlerFactory::instance().create(dictionary_id, library_path, library_settings);
|
||||||
|
@ -17,12 +17,10 @@ public:
|
|||||||
|
|
||||||
LibraryRequestHandler(
|
LibraryRequestHandler(
|
||||||
size_t keep_alive_timeout_,
|
size_t keep_alive_timeout_,
|
||||||
Context & context_,
|
Context & context_)
|
||||||
const std::string & dictionary_id_)
|
|
||||||
: log(&Poco::Logger::get("LibraryRequestHandler"))
|
: log(&Poco::Logger::get("LibraryRequestHandler"))
|
||||||
, keep_alive_timeout(keep_alive_timeout_)
|
, keep_alive_timeout(keep_alive_timeout_)
|
||||||
, context(context_)
|
, context(context_)
|
||||||
, dictionary_id(dictionary_id_)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +32,6 @@ private:
|
|||||||
Poco::Logger * log;
|
Poco::Logger * log;
|
||||||
size_t keep_alive_timeout;
|
size_t keep_alive_timeout;
|
||||||
Context & context;
|
Context & context;
|
||||||
const std::string dictionary_id;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@ LibraryBridgeHelper::LibraryBridgeHelper(
|
|||||||
|
|
||||||
Poco::URI LibraryBridgeHelper::getDictionaryURI() const
|
Poco::URI LibraryBridgeHelper::getDictionaryURI() const
|
||||||
{
|
{
|
||||||
auto uri = createBaseURI();
|
auto uri = getMainURI();
|
||||||
uri.setPath('/' + dictionary_id);
|
uri.addQueryParameter("dictionary_id", dictionary_id);
|
||||||
return uri;
|
return uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user