Instead of Reqest::post_tab we use now Request::post_in (pt::Space).
Request::http_status will be used instead Request::status,
but at the moment is not changed in all places.
Request::status has been marked as depracated.
While here:
- Check for root dir in App and not in FunctionParser,
let FunctionParser only log the root dir.
- Read post variables after parsing url parameters,
this allows winix functions to set limits
for post input.
- Set limits when parsing input json format, new
options added to config: post_max_object_items, post_max_table_items,
post_max_all_items, post_max_nested_objects.
There are similar options in each winix function (they are in
FunctionBase).
- Some refactoring in App.
- Add config option: log_whole_http_post if true
then the whole parsed post input is logged.
- Add config option: post_json_max - max length of input stream
for parsing json.
- Add config option: templates_request_status, default request_status.html
this is an ezc template used as [content] when the request status
is not 200_ok.
- Fix: Sort winix function didn't show items to sort (fix and do some
refactoring as well)
- Properly sort items in: ImgCrop, Ls, Sort, Upload
- Remove ezc templates: err_404.html, err_per_denied.html - now
request_status.html is used.
In PostParser we add some prefix with a number if the name of a variable is the same,
we should use zero padding for the number to be correctly sorted.
add config options:
db_startup_connection_max_attempts - default 0 (infinite)
db_startup_connection_attempt_delay - delay in seconds between attempts (default 5)
BREAKING CHANGE: WINIX_PLUGIN_INIT plugin message requires to set result status,
you have to set the result status to true (env.res) if your
plugin was initialized correctly, otherwise winix will not start
Added methods:
void AddParam(const std::wstring & param_name, const std::wstring & param_value);
void AddParam(const wchar_t * param_name, const wchar_t * param_value);
void RemoveParam(const wchar_t * param_name);
void RemoveParam(const std::wstring & param_name);
This is only temporarily, we will be using the pt::Space structure in the future.
Environment variables must be prefixed with winix_ to be loaded by winix.
The winix_ prefix is then removed and the key value converted to lowercase.
Sample:
evn WINIX_MY_OPTION=TEST123test winix -c config_file
This will add my_option to the config with value TEST123test.
Environment variables are read last so they will overwrite the values
from the configuration files.
Usage: winix [options]
-c : a path to the config file
--config : a path to the config file
-h : print usage information
--help : print usage information
-? : print usage information
While here:
- let it be possible to parse multiple configs,
- fix: some error messages were not printed at startup.
- emacs editor has an option to select markdown, now it has two planes: one for content editing and the other to show preview
- CodeMirror editor updated to 5.64.0
- to convert markdown to html we use showdown https://github.com/showdownjs/showdown (conversion is done on the client side)
now winix can return json, xml, csv from out_main_stream or from frames and json from models
removed from Request:
bool send_bin_stream
bool return_json
bool return_info_only
pt::Space info
bool page_generated
bool out_main_stream_use_html_filter
bool out_streams_use_html_filter
added to Request:
enum AnswerSource
enum AnswerContainer
AnswerSource answer_source
AnswerContainer answer_container
bool use_ezc_engine
std::wstring frame
bool send_all_frames
bool use_html_filter
added to Config:
// the name of the url parameter for returning all frames, e.g. https://domain.tld/mydir/myfunction/allframes
// default: allframes
std::wstring request_all_frames_parameter;
// the name of the root element when serializing request answer to xml
// default: winix
std::wstring xml_root;
algorithm (the whole algorithm is described in core/request.h):
at the beginning of a request winix sets
answer_source to models
answer_container to text
use_ezc_engine to true
next answer_container and use_ezc_engine can be changed in the following way:
1. winix will look for 'Accept' http header and depending on the header winix will set:
(not implemented yet)
Accept | answer_container | use_ezc_engine
------------------------------------|-----------------
application/json | json | false
application/xml | xml | false
text/csv | csv | false
2. next answer_container is set depending on 'container' url parameter
container | answer_container
---------------------------------------------------------
not present | don't change the value
text | text
json | json
xml | xml
csv | csv
use_ezc_engine is set depending on 'answer' url parameter:
answer | use_ezc_engine
---------------------------------
not present | don't change the value
html | true
data | false
if 'answer' is html then we take into account two more parameters:
frame: frame_name (empty default) - if set then winix returns this specific frame
allframes: (if present then winix returns all frames)