mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-15 10:52:30 +00:00
43 lines
1.0 KiB
C++
43 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <sstream>
|
|
#include <Poco/Net/HTMLForm.h>
|
|
#include <Poco/Net/HTTPRequest.h>
|
|
#include <Poco/URI.h>
|
|
|
|
#include <IO/ReadHelpers.h>
|
|
|
|
|
|
/** Somehow, in case of POST, Poco::Net::HTMLForm doesn't read parameters from URL, only from body.
|
|
* This helper allows to read parameters just from URL.
|
|
*/
|
|
struct HTMLForm : public Poco::Net::HTMLForm
|
|
{
|
|
HTMLForm(const Poco::Net::HTTPRequest & request)
|
|
{
|
|
Poco::URI uri(request.getURI());
|
|
std::istringstream istr(uri.getRawQuery()); // STYLE_CHECK_ALLOW_STD_STRING_STREAM
|
|
readUrl(istr);
|
|
}
|
|
|
|
HTMLForm(const Poco::URI & uri)
|
|
{
|
|
std::istringstream istr(uri.getRawQuery()); // STYLE_CHECK_ALLOW_STD_STRING_STREAM
|
|
readUrl(istr);
|
|
}
|
|
|
|
|
|
template <typename T>
|
|
T getParsed(const std::string & key, T default_value)
|
|
{
|
|
auto it = find(key);
|
|
return (it != end()) ? DB::parse<T>(it->second) : default_value;
|
|
}
|
|
|
|
template <typename T>
|
|
T getParsed(const std::string & key)
|
|
{
|
|
return DB::parse<T>(get(key));
|
|
}
|
|
};
|