From d892791ab650e42a423222ead0c829cee5696003 Mon Sep 17 00:00:00 2001 From: Ground0 Date: Wed, 29 Mar 2023 10:37:20 +0200 Subject: [PATCH] Separate http status functions --- inc/lweb_http_status.pbi | 123 ++++++++++++++++++++++++ inc/lweb_http_status_header.pbi | 18 ++++ inc/lweb_http_status_header_private.pbi | 21 ++++ 3 files changed, 162 insertions(+) create mode 100644 inc/lweb_http_status.pbi create mode 100644 inc/lweb_http_status_header.pbi create mode 100644 inc/lweb_http_status_header_private.pbi diff --git a/inc/lweb_http_status.pbi b/inc/lweb_http_status.pbi new file mode 100644 index 0000000..7d700f0 --- /dev/null +++ b/inc/lweb_http_status.pbi @@ -0,0 +1,123 @@ +;******************************** +;* +;* lweb_http_status.pbi +;* +;* LiHaSo Webserver Default status. +;* +;* Configuration Module for Configs. +;* + +; configuration\status("number")\status = "200" +; configuration\status("number")\file = "" +; configuration\status("number")\header = "200 Ok" +; configuration\status("number")\message = "" +; configuration\status("number")\template = #False +; configuration\status("number")\content = #False + + +;* +;* Default status components +;* Please add here only rfc7231 codes. +;* +Procedure status_defaults() + ;Import XML cfg/default_http_status_codes.xml resp config + Protected ReadedXML.s, FileHandle.i, XMLHandle.i + FileHandle = ReadFile(#PB_Any, configuration\config_file("status_xml")\name) + If IsFile(FileHandle) + ReadedXML = ReadString(FileHandle, #PB_File_IgnoreEOL) + CloseFile(FileHandle) + XMLHandle = ParseXML(#PB_Any, ReadedXML) + If XMLHandle And XMLStatus(XMLHandle) = #PB_XML_Success + ExtractXMLMap(MainXMLNode(XMLHandle), configuration\status()) + Else + lhs_log_ext::OutL(lhs_web::get_config(lhs_web::#conf_Debug_logUUID), lhs_log_ext::#Info, "Import of the File:"+configuration\config_file("status_xml")\name+" failed.") + EndIf + Else + lhs_log_ext::OutL(lhs_web::get_config(lhs_web::#conf_Debug_logUUID), lhs_log_ext::#Info, "Could not open File:"+configuration\config_file("status_xml")\name+" .") + EndIf +EndProcedure + +Procedure.s status_get_file(status.s, UUID.s="Default") + If UUID <> "Default" + If configuration\hosts(UUID)\status(status)\status = status + ProcedureReturn configuration\hosts(UUID)\status(status)\file + EndIf + EndIf + + If configuration\status(status)\status = status + ProcedureReturn configuration\status(status)\file + Else + ProcedureReturn "Internal" + EndIf +EndProcedure + +Procedure.s status_get_header(status.s, UUID.s="Default") + If UUID <> "Default" + If configuration\hosts(UUID)\status(status)\status = status + ProcedureReturn configuration\hosts(UUID)\status(status)\header + EndIf + EndIf + + If configuration\status(status)\status = status + ProcedureReturn configuration\status(status)\header + Else + ProcedureReturn "500 Internal Server Error" + EndIf +EndProcedure + +Procedure.s status_get_message(status.s, UUID.s="Default") + If UUID <> "Default" + If configuration\hosts(UUID)\status(status)\status = status + ProcedureReturn configuration\hosts(UUID)\status(status)\message + EndIf + EndIf + + If configuration\status(status)\status = status + ProcedureReturn configuration\status(status)\message + Else + ProcedureReturn "500 Internal Server Error" + EndIf +EndProcedure + +Procedure.s status_get_message_body(status.s, UUID.s="Default") + If UUID <> "Default" + If configuration\hosts(UUID)\status(status)\status = status + ProcedureReturn configuration\hosts(UUID)\status(status)\message_body + EndIf + EndIf + + If configuration\status(status)\status = status + ProcedureReturn configuration\status(status)\message_body + Else + ProcedureReturn "" + EndIf +EndProcedure + +Procedure status_get_template(status.s, UUID.s="Default") + If UUID <> "Default" + If configuration\hosts(UUID)\status(status)\status = status + ProcedureReturn configuration\hosts(UUID)\status(status)\template + EndIf + EndIf + + If configuration\status(status)\status = status + ProcedureReturn configuration\status(status)\template + Else + ProcedureReturn #True + EndIf +EndProcedure + +Procedure status_get_content(status.s, UUID.s="Default") + If UUID <> "Default" + If configuration\hosts(UUID)\status(status)\status = status + ProcedureReturn configuration\hosts(UUID)\status(status)\content + EndIf + EndIf + + If configuration\status(status)\status = status + ProcedureReturn configuration\status(status)\content + Else + ProcedureReturn #True + EndIf +EndProcedure + diff --git a/inc/lweb_http_status_header.pbi b/inc/lweb_http_status_header.pbi new file mode 100644 index 0000000..cc4351e --- /dev/null +++ b/inc/lweb_http_status_header.pbi @@ -0,0 +1,18 @@ +;******************************** +;* +;* lweb_http_status.pbi +;* +;* LiHaSo Webserver Default status Headerfile. +;* +;* Configuration Module for Configs. +;* +;* Please add here only rfc7231 codes. + + +Declare.s status_get_file(status.s, UUID.s="Default") +Declare.s status_get_header(status.s, UUID.s="Default") +Declare.s status_get_message(status.s, UUID.s="Default") +Declare.s status_get_message_body(status.s, UUID.s="Default") +Declare status_get_template(status.s, UUID.s="Default") +Declare status_get_content(status.s, UUID.s="Default") + diff --git a/inc/lweb_http_status_header_private.pbi b/inc/lweb_http_status_header_private.pbi new file mode 100644 index 0000000..621aa80 --- /dev/null +++ b/inc/lweb_http_status_header_private.pbi @@ -0,0 +1,21 @@ +;******************************** +;* +;* lweb_http_status.pbi +;* +;* LiHaSo Webserver Default status Headerfile. +;* +;* Configuration Module for Configs. +;* +;* Please add here only rfc7231 codes. + + +Structure http_status_codes + status.s ;Error Number + file.s ;Error File or "Integrated" for default Message as Template + header.s ;Error Header message for #http_head_status + message.s ;Error Message for Templated + message_body.s ;Error Message Body for Templated + template.b ;Is it a Template {ErrorNo}=error and {Message}=message and {Message_body}=message_body need to be there + content.b ;has it a content to send. (200 for ex. has no content who need to be processed.) + Map head_fields.http_headerfield() +EndStructure \ No newline at end of file