don't check for request->is_htmx_request for sending frames, check only "frame" url paremeter

added config parameter: request_frame_parameter, default: "frame"
This commit is contained in:
Tomasz Sowa 2021-10-08 03:08:11 +02:00
parent 3f5eabeaa1
commit c4b5565995
4 changed files with 25 additions and 5 deletions

View File

@ -780,15 +780,18 @@ pt::WTextStream * App::CreateFrameAnswer()
{
Request & req = *cur.request;
auto i = req.out_streams.streams_map.begin();
const std::wstring * frame = cur.request->ParamValuep(L"frame");
const std::wstring * frame = cur.request->ParamValuep(config.request_frame_parameter);
if( frame )
{
for( ; i != req.out_streams.streams_map.end() ; ++i)
{
if( (frame && i->first == *frame) || (!frame && i->first == L"content") )
if( i->first == *frame )
{
return &i->second->get_buffer();
}
}
}
return nullptr;
}
@ -1904,6 +1907,16 @@ return header;
}
bool App::IsRequestedFrame()
{
if( !config.request_frame_parameter.empty() )
{
return cur.request->ParamValuep(config.request_frame_parameter);
}
return false;
}
void App::SendTextAnswer()
{
@ -1923,12 +1936,13 @@ size_t output_size = 0;
*/
FilterContent();
// cur.request->return_json is depracated, we will create json from models/space registered through request->models object
if( cur.request->return_json )
{
source = CreateJSONAnswer();
}
else
if( cur.request->is_htmx_request )
if( IsRequestedFrame() )
{
source = CreateFrameAnswer();

View File

@ -226,6 +226,7 @@ private:
void CheckHtmx();
void SetSubdomain();
bool IsRequestedFrame();
Header GetHTTPStatusCode();
void PrepareSessionCookie();

View File

@ -284,6 +284,7 @@ void Config::AssignValues(bool stdout_is_closed)
ezc_max_elements = Size(L"ezc_max_elements", 50000);
ezc_max_loop_elements = Size(L"ezc_max_loop_elements", 5000);
ezc_out_streams_size = Size(L"ezc_out_streams_size", 128);
request_frame_parameter = Text(L"request_frame_parameter", L"frame");
account_need_email_verification = Bool(L"account_need_email_verification", true);
reset_password_code_expiration_time = Long(L"reset_password_code_expiration_time", 86400);

View File

@ -672,6 +672,10 @@ public:
// default: 128
size_t ezc_out_streams_size;
// the name of the url parameter for returning a frame, e.g. https://domain.tld/mydir/myfunction/frame:foo
// default: frame
std::wstring request_frame_parameter;
// when true then when a user want to create a new account
// he has to provide his email and a message will be sent back to him
// with a link to activate the account