2021-09-22 00:23:25 +02:00
|
|
|
/*
|
|
|
|
* This file is a part of Winix
|
|
|
|
* and is distributed under the 2-Clause BSD licence.
|
|
|
|
* Author: Tomasz Sowa <t.sowa@ttmath.org>
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
2023-07-31 17:31:22 +02:00
|
|
|
* Copyright (c) 2021-2023, Tomasz Sowa
|
2021-09-22 00:23:25 +02:00
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions are met:
|
|
|
|
*
|
|
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
|
|
* this list of conditions and the following disclaimer.
|
|
|
|
*
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef headerfile_winix_core_header
|
|
|
|
#define headerfile_winix_core_header
|
|
|
|
|
2022-02-01 18:44:23 +01:00
|
|
|
#include "log.h"
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
#include <textstream/textstream.h>
|
2022-02-01 18:44:23 +01:00
|
|
|
|
2021-09-22 00:23:25 +02:00
|
|
|
|
|
|
|
namespace Winix
|
|
|
|
{
|
|
|
|
|
|
|
|
class Header
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
2021-10-13 01:27:14 +02:00
|
|
|
/*
|
|
|
|
* headers' names
|
|
|
|
*/
|
|
|
|
static constexpr const wchar_t * content_type = L"Content-Type";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * accept = L"Accept";
|
|
|
|
static constexpr const wchar_t * accept_language = L"Accept-Language";
|
2022-08-10 12:42:16 +02:00
|
|
|
static constexpr const wchar_t * authorization = L"Authorization";
|
2022-08-11 08:04:40 +02:00
|
|
|
static constexpr const wchar_t * allow = L"Allow";
|
2022-09-08 03:12:44 +02:00
|
|
|
static constexpr const wchar_t * very = L"Very";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * origin = L"Origin";
|
2022-09-07 14:46:29 +02:00
|
|
|
static constexpr const wchar_t * access_control_allow_methods = L"Access-Control-Allow-Methods";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * access_control_allow_origin = L"Access-Control-Allow-Origin";
|
2022-09-07 14:46:29 +02:00
|
|
|
static constexpr const wchar_t * access_control_allow_headers = L"Access-Control-Allow-Headers";
|
|
|
|
static constexpr const wchar_t * access_control_allow_credentials = L"Access-Control-Allow-Credentials";
|
2022-09-08 03:12:44 +02:00
|
|
|
static constexpr const wchar_t * access_control_expose_headers = L"Access-Control-Expose-Headers";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * access_control_max_age = L"Access-Control-Max-Age";
|
2021-09-22 00:23:25 +02:00
|
|
|
|
2022-02-01 18:44:23 +01:00
|
|
|
/*
|
|
|
|
* headers' names lower case
|
|
|
|
*/
|
|
|
|
static constexpr const wchar_t * content_type_lc = L"content-type";
|
|
|
|
static constexpr const wchar_t * accept_lc = L"accept";
|
2022-02-02 18:20:32 +01:00
|
|
|
static constexpr const wchar_t * accept_language_lc = L"accept-language";
|
2021-09-22 00:23:25 +02:00
|
|
|
|
2021-10-13 01:27:14 +02:00
|
|
|
/*
|
|
|
|
* headers' values
|
|
|
|
*/
|
|
|
|
static constexpr const wchar_t * application_octet_stream = L"application/octet-stream";
|
2021-09-22 00:23:25 +02:00
|
|
|
|
2021-10-13 01:27:14 +02:00
|
|
|
static constexpr const wchar_t * text_html = L"text/html";
|
|
|
|
static constexpr const wchar_t * application_json = L"application/json";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * application_xml = L"application/xml";
|
2021-10-13 01:27:14 +02:00
|
|
|
static constexpr const wchar_t * application_xhtml_xml = L"application/xhtml+xml";
|
|
|
|
static constexpr const wchar_t * text_csv = L"text/csv";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * text_javascript = L"text/javascript";
|
2023-07-31 17:31:22 +02:00
|
|
|
static constexpr const wchar_t * text_xml = L"text/xml";
|
2021-10-13 01:27:14 +02:00
|
|
|
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * all_all = L"*/*";
|
2022-02-01 18:44:23 +01:00
|
|
|
static constexpr const wchar_t * text_all = L"text/*";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * application_all = L"application/*";
|
2022-02-01 18:44:23 +01:00
|
|
|
|
2021-10-13 01:27:14 +02:00
|
|
|
static constexpr const wchar_t * text_html_utf8 = L"text/html; charset=UTF-8";
|
|
|
|
static constexpr const wchar_t * application_json_utf8 = L"application/json; charset=UTF-8";
|
|
|
|
static constexpr const wchar_t * application_xml_utf8 = L"application/xml; charset=UTF-8";
|
|
|
|
static constexpr const wchar_t * application_xhtml_xml_utf8 = L"application/xhtml+xml; charset=UTF-8";
|
|
|
|
static constexpr const wchar_t * text_csv_utf8 = L"text/csv; charset=UTF-8";
|
|
|
|
static constexpr const wchar_t * text_javascript_utf8 = L"text/javascript; charset=UTF-8";
|
2023-07-31 17:31:22 +02:00
|
|
|
static constexpr const wchar_t * text_xml_utf8 = L"text/xml; charset=UTF-8";
|
2021-09-22 00:23:25 +02:00
|
|
|
|
2022-07-25 14:21:21 +02:00
|
|
|
static constexpr const wchar_t * application_x_www_form_urlencoded = L"application/x-www-form-urlencoded";
|
|
|
|
static constexpr const wchar_t * multipart_form_data = L"multipart/form-data";
|
|
|
|
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * bearer = L"Bearer";
|
2022-08-10 12:42:16 +02:00
|
|
|
static constexpr const wchar_t * winix = L"Winix";
|
2022-07-25 14:21:21 +02:00
|
|
|
|
2022-02-01 18:44:23 +01:00
|
|
|
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
static const int status_200_ok = 200;
|
2022-08-20 00:31:10 +02:00
|
|
|
static const int status_201_created = 201;
|
2022-08-11 08:04:40 +02:00
|
|
|
static const int status_204_no_content = 204;
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
static const int status_300_multiple_choices = 300;
|
|
|
|
static const int status_301_moved_permanently = 301;
|
|
|
|
static const int status_302_found = 302;
|
|
|
|
static const int status_303_see_other = 303;
|
|
|
|
static const int status_307_temporary_redirect = 307;
|
|
|
|
static const int status_400_bad_request = 400;
|
|
|
|
static const int status_403_forbidden = 403;
|
|
|
|
static const int status_404_not_found = 404;
|
|
|
|
static const int status_414_uri_too_long = 414;
|
2023-11-08 17:59:40 +01:00
|
|
|
static const int status_422_unprocessable_entity = 422;
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
static const int status_500_internal_server_error = 500;
|
2023-11-08 17:59:40 +01:00
|
|
|
static const int status_503_service_unavailable = 503;
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
|
|
|
|
|
|
|
|
static constexpr const wchar_t * str_status_200 = L"OK";
|
2022-08-20 00:31:10 +02:00
|
|
|
static constexpr const wchar_t * str_status_201 = L"Created";
|
2022-08-11 08:04:40 +02:00
|
|
|
static constexpr const wchar_t * str_status_204 = L"No Content";
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
static constexpr const wchar_t * str_status_300 = L"Multiple Choices";
|
|
|
|
static constexpr const wchar_t * str_status_301 = L"Moved Permanently";
|
|
|
|
static constexpr const wchar_t * str_status_302 = L"Found";
|
|
|
|
static constexpr const wchar_t * str_status_303 = L"See Other";
|
|
|
|
static constexpr const wchar_t * str_status_307 = L"Temporary Redirect";
|
|
|
|
static constexpr const wchar_t * str_status_400 = L"Bad Request";
|
|
|
|
static constexpr const wchar_t * str_status_403 = L"Forbidden";
|
|
|
|
static constexpr const wchar_t * str_status_404 = L"Not Found";
|
|
|
|
static constexpr const wchar_t * str_status_414 = L"URI Too Long";
|
2023-11-08 17:59:40 +01:00
|
|
|
static constexpr const wchar_t * str_status_422 = L"Unprocessable Entity";
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
static constexpr const wchar_t * str_status_500 = L"Internal Server Error";
|
2022-07-25 14:21:21 +02:00
|
|
|
static constexpr const wchar_t * str_status_503 = L"Service Unavailable";
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
|
|
|
|
|
|
|
|
static const wchar_t * find_status_string_value(int http_status);
|
|
|
|
static void prepare_status_value(int http_status, pt::WTextStream & value, bool clear_value = true);
|
|
|
|
|
2022-09-08 03:12:44 +02:00
|
|
|
static bool is_header_value_char_correct(wchar_t c);
|
|
|
|
static bool is_header_value_correct(const wchar_t * str);
|
|
|
|
static bool is_header_value_correct(const std::wstring & str);
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
struct StatusIntStringMapHelper
|
|
|
|
{
|
|
|
|
int status_int;
|
|
|
|
const wchar_t * status_str;
|
|
|
|
};
|
|
|
|
|
|
|
|
static constexpr StatusIntStringMapHelper status_int_string_map[] = {
|
|
|
|
{status_200_ok, str_status_200},
|
2022-08-20 00:31:10 +02:00
|
|
|
{status_201_created, str_status_201},
|
2022-08-11 08:04:40 +02:00
|
|
|
{status_204_no_content, str_status_204},
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
{status_300_multiple_choices, str_status_300},
|
|
|
|
{status_301_moved_permanently, str_status_301},
|
|
|
|
{status_302_found, str_status_302},
|
|
|
|
{status_303_see_other, str_status_303},
|
|
|
|
{status_307_temporary_redirect, str_status_307},
|
|
|
|
{status_400_bad_request, str_status_400},
|
|
|
|
{status_403_forbidden, str_status_403},
|
|
|
|
{status_404_not_found, str_status_404},
|
|
|
|
{status_414_uri_too_long, str_status_414},
|
2023-11-08 17:59:40 +01:00
|
|
|
{status_422_unprocessable_entity, str_status_422},
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
{status_500_internal_server_error, str_status_500},
|
2023-11-08 17:59:40 +01:00
|
|
|
{status_503_service_unavailable, str_status_503},
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
};
|
|
|
|
|
2022-02-01 18:44:23 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
remove Request::post_tab and add Request::http_status
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.
2022-05-30 01:29:18 +02:00
|
|
|
|
2022-02-01 18:44:23 +01:00
|
|
|
class HeaderValue
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
std::wstring value;
|
|
|
|
double weight; // q parameter in some headers
|
|
|
|
|
|
|
|
|
|
|
|
HeaderValue()
|
|
|
|
{
|
|
|
|
weight = 0.0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void log_values(const std::vector<HeaderValue> & header_values, Log & log)
|
|
|
|
{
|
|
|
|
char buf[64];
|
|
|
|
bool is_first = true;
|
|
|
|
|
|
|
|
for(const HeaderValue & h: header_values)
|
|
|
|
{
|
|
|
|
snprintf(buf, sizeof(buf)/sizeof(char), "%.3f", h.weight);
|
|
|
|
|
|
|
|
if( !is_first )
|
|
|
|
log << ", ";
|
|
|
|
|
|
|
|
log << h.value << ";q=" << buf;
|
|
|
|
is_first = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-09-22 00:23:25 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|