add closing dialogs, redirecting and removing content functionality to the winix framework
add such new methods to FunctionBase: - bool can_push_url_to_browser_history(); - void add_standard_models(); - void close_modal_dialogs(); - void prepare_doc_url(const wchar_t * local_url, pt::WTextStream & url); - void prepare_doc_url(const wchar_t * local_url, std::wstring & url); - std::wstring prepare_doc_url(const wchar_t * local_url = nullptr); - std::wstring prepare_doc_url(const std::wstring & local_url); - void redirect_to(const wchar_t * url, bool append_domain = true); - void redirect_to(const std::wstring & url, bool append_domain = true); - void redirect_to(const pt::WTextStream & url, bool append_domain = true); - void redirect_to(const wchar_t * url, const wchar_t * frame_url, const wchar_t * dom_target); - void redirect_to(const std::wstring & url, const std::wstring & frame_url, const std::wstring & dom_target); - void redirect_to(pt::WTextStream & url, pt::WTextStream & frame_url, pt::WTextStream & dom_target); - void redirect_to(pt::WTextStream & url, pt::WTextStream & frame_url, const wchar_t * dom_target); - void redirect_to(const wchar_t * url, const wchar_t * frame_url, pt::WTextStream & dom_target); - void retarged(const wchar_t * frame, const wchar_t * dom_target, const wchar_t * push_url = nullptr, const wchar_t * swap_algorithm = nullptr); - void retarged(const std::wstring & frame, const std::wstring & dom_target, const std::wstring & push_url, const wchar_t * swap_algorithm = nullptr); - void retarged(const wchar_t * frame, pt::WTextStream & dom_target, const wchar_t * push_url = nullptr, const wchar_t * swap_algorithm = nullptr); - void remove_content(pt::WTextStream & dom_target, bool close_dialogs = false); - void remove_content(const wchar_t * dom_target, bool has_postfix, long dom_target_postfix, bool close_dialogs = false); - void remove_content(const wchar_t * dom_target, long dom_target_postfix, bool close_dialogs = false); - void remove_content(const wchar_t * dom_target, bool close_dialogs = false); - void update_content(const wchar_t * frame, pt::WTextStream & dom_target, bool close_dialogs = false); - void update_content(const wchar_t * frame, const wchar_t * dom_target, bool has_postfix, long dom_target_postfix, bool close_dialogs = false); - void update_content(const wchar_t * frame, const wchar_t * dom_target, long dom_target_postfix, bool close_dialogs = false); - void update_content(const wchar_t * frame, const wchar_t * dom_target, bool close_dialogs = false); while here: - refactor PascalCase to snake_case in FunctionBase - add start_request() and finish_request() methods to FunctionBase - add has_*_access() methods to FunctionBase - fix: FunctionBase::clear() method was not called if a request was assigned to a job - add a WinixEzcHelper model - allow to serialize a header if the header value is neither a string nor an integer - refactor PascalCase to snake_case in functions: Emacs, Mkdir, Upload
This commit is contained in:
@@ -184,8 +184,8 @@ void Functions::SetObjects(FunctionBase * fun)
|
||||
//fun->SetConfig(config);
|
||||
//fun->SetCur(cur);
|
||||
//fun->SetSystem(system);
|
||||
fun->SetFunctions(this);
|
||||
fun->SetTemplates(templates);
|
||||
fun->set_functions(this);
|
||||
fun->set_templates(templates);
|
||||
//fun->SetSynchro(synchro);
|
||||
//fun->SetSessionManager(session_manager);
|
||||
}
|
||||
@@ -288,7 +288,7 @@ void Functions::InitFunctions()
|
||||
Table::iterator i = table.begin();
|
||||
|
||||
for( ; i!=table.end() ; ++i)
|
||||
i->second->Init();
|
||||
i->second->init();
|
||||
}
|
||||
|
||||
|
||||
@@ -297,7 +297,7 @@ void Functions::FinishFunctions()
|
||||
Table::iterator i = table.begin();
|
||||
|
||||
for( ; i!=table.end() ; ++i)
|
||||
i->second->Finish();
|
||||
i->second->finish();
|
||||
}
|
||||
|
||||
|
||||
@@ -449,19 +449,181 @@ bool was_default_function = false;
|
||||
}
|
||||
|
||||
|
||||
bool Functions::HasAccessToCallMake()
|
||||
{
|
||||
bool has_access = false;
|
||||
|
||||
if( cur->request->method == Request::get )
|
||||
{
|
||||
has_access = cur->request->function->has_get_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::head )
|
||||
{
|
||||
has_access = cur->request->function->has_head_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::post )
|
||||
{
|
||||
has_access = cur->request->function->has_post_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::put )
|
||||
{
|
||||
has_access = cur->request->function->has_put_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::delete_ )
|
||||
{
|
||||
has_access = cur->request->function->has_delete_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::connect )
|
||||
{
|
||||
has_access = cur->request->function->has_connect_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::options )
|
||||
{
|
||||
has_access = cur->request->function->has_options_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::trace )
|
||||
{
|
||||
has_access = cur->request->function->has_trace_access();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::patch )
|
||||
{
|
||||
has_access = cur->request->function->has_patch_access();
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log2 << "Functions: I cannot call a function, an unknown request method (skipping)" << logend;
|
||||
}
|
||||
|
||||
return has_access;
|
||||
}
|
||||
|
||||
|
||||
void Functions::CallFunctionMake()
|
||||
{
|
||||
if( cur->request->method == Request::get )
|
||||
{
|
||||
cur->request->function->make_get();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::head )
|
||||
{
|
||||
cur->request->function->make_head();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::post )
|
||||
{
|
||||
cur->request->function->make_post();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::put )
|
||||
{
|
||||
cur->request->function->make_put();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::delete_ )
|
||||
{
|
||||
cur->request->function->make_delete();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::connect )
|
||||
{
|
||||
cur->request->function->make_connect();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::options )
|
||||
{
|
||||
cur->request->function->make_options();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::trace )
|
||||
{
|
||||
cur->request->function->make_trace();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::patch )
|
||||
{
|
||||
cur->request->function->make_patch();
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log2 << "Functions: I cannot call a function, an unknown request method (skipping)" << logend;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Functions::CallFunctionContinueMake()
|
||||
{
|
||||
if( cur->request->method == Request::get )
|
||||
{
|
||||
cur->request->function->continue_make_get();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::head )
|
||||
{
|
||||
cur->request->function->continue_make_head();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::post )
|
||||
{
|
||||
cur->request->function->continue_make_post();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::put )
|
||||
{
|
||||
cur->request->function->continue_make_put();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::delete_ )
|
||||
{
|
||||
cur->request->function->continue_make_delete();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::connect )
|
||||
{
|
||||
cur->request->function->continue_make_connect();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::options )
|
||||
{
|
||||
cur->request->function->continue_make_options();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::trace )
|
||||
{
|
||||
cur->request->function->continue_make_trace();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::patch )
|
||||
{
|
||||
cur->request->function->continue_make_patch();
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log2 << "Functions: I cannot continue a request, an unknown request method (skipping)" << logend;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Functions::MakeFunction()
|
||||
{
|
||||
if( !cur->request->function )
|
||||
{
|
||||
cur->request->http_status = Header::status_500_internal_server_error; // or 404? (404 was originally)
|
||||
log << log1 << "Functions: no function to call" << logend;
|
||||
log << log2 << "Functions: no function to call" << logend;
|
||||
return;
|
||||
}
|
||||
|
||||
if( !system->DirsHaveReadExecPerm() ||
|
||||
!system->HasReadExecAccess(cur->request->function->fun) ||
|
||||
!cur->request->function->HasAccess() )
|
||||
!HasAccessToCallMake() )
|
||||
{
|
||||
cur->request->http_status = Header::status_403_forbidden;
|
||||
return;
|
||||
@@ -473,54 +635,11 @@ void Functions::MakeFunction()
|
||||
return;
|
||||
}
|
||||
|
||||
if( cur->request->method == Request::get )
|
||||
{
|
||||
cur->request->function->MakeGet();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::head )
|
||||
{
|
||||
cur->request->function->MakeHead();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::post )
|
||||
{
|
||||
cur->request->function->MakePost();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::put )
|
||||
{
|
||||
cur->request->function->MakePut();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::delete_ )
|
||||
{
|
||||
cur->request->function->MakeDelete();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::connect )
|
||||
{
|
||||
cur->request->function->MakeConnect();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::options )
|
||||
{
|
||||
cur->request->function->MakeOptions();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::trace )
|
||||
{
|
||||
cur->request->function->MakeTrace();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::patch )
|
||||
{
|
||||
cur->request->function->MakePatch();
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Functions: I cannot call a function, an unknown request method (skipping)" << logend;
|
||||
}
|
||||
cur->request->function->start_request();
|
||||
CallFunctionMake();
|
||||
|
||||
if( cur->request->run_state != Request::RunState::assigned_to_job )
|
||||
cur->request->function->finish_request();
|
||||
}
|
||||
|
||||
|
||||
@@ -535,7 +654,7 @@ void Functions::ContinueMakeFunction()
|
||||
|
||||
if( !system->DirsHaveReadExecPerm() ||
|
||||
!system->HasReadExecAccess(cur->request->function->fun) ||
|
||||
!cur->request->function->HasAccess() )
|
||||
!HasAccessToCallMake() )
|
||||
{
|
||||
cur->request->http_status = Header::status_403_forbidden;
|
||||
return;
|
||||
@@ -545,54 +664,10 @@ void Functions::ContinueMakeFunction()
|
||||
cur->request->PutMethodName(log);
|
||||
log << " for request " << cur->request << " for function " << cur->request->function->fun.url << logend;
|
||||
|
||||
if( cur->request->method == Request::get )
|
||||
{
|
||||
cur->request->function->ContinueMakeGet();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::head )
|
||||
{
|
||||
cur->request->function->ContinueMakeHead();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::post )
|
||||
{
|
||||
cur->request->function->ContinueMakePost();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::put )
|
||||
{
|
||||
cur->request->function->ContinueMakePut();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::delete_ )
|
||||
{
|
||||
cur->request->function->ContinueMakeDelete();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::connect )
|
||||
{
|
||||
cur->request->function->ContinueMakeConnect();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::options )
|
||||
{
|
||||
cur->request->function->ContinueMakeOptions();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::trace )
|
||||
{
|
||||
cur->request->function->ContinueMakeTrace();
|
||||
}
|
||||
else
|
||||
if( cur->request->method == Request::patch )
|
||||
{
|
||||
cur->request->function->ContinueMakePatch();
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Functions: I cannot continue a request, an unknown request method (skipping)" << logend;
|
||||
}
|
||||
CallFunctionContinueMake();
|
||||
|
||||
if( cur->request->run_state != Request::RunState::assigned_to_job )
|
||||
cur->request->function->finish_request();
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user