#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)); } };