Dokumentation erstellt.
Falsch benante Prozedur gändert: MapStringToJSONString -> MapToJSONString
This commit is contained in:
parent
368edba9ba
commit
e7c776a8fd
4 changed files with 139 additions and 6 deletions
133
README.md
133
README.md
|
@ -1,3 +1,136 @@
|
||||||
# lweb
|
# lweb
|
||||||
|
|
||||||
LiHaSo Webserver Modul
|
LiHaSo Webserver Modul
|
||||||
|
|
||||||
|
## Öffentliche Funktionen:
|
||||||
|
|
||||||
|
### Konfiguration des Server Moduls:
|
||||||
|
|
||||||
|
Mögliche Parameter:
|
||||||
|
```
|
||||||
|
lweb::#conf_port ;Hörender Port, z.B. "80"
|
||||||
|
lweb::#conf_binding ;Interface Binding z.B. nur Lokalhost mit "127.0.0.1"
|
||||||
|
lweb::#conf_defaultfile ;Standard wenn keine Datei (Extension angegeben ist) z.B. "index.php"
|
||||||
|
lweb::#conf_basedir ;Standard Verzeichnis z.B. "/srv/www/htdocs/"
|
||||||
|
lweb::#conf_error400 ;TODO:error400 bearbeitung
|
||||||
|
lweb::#conf_max_clients ;Maximale Clientconnections (Memory beachten)
|
||||||
|
lweb::#conf_server_type ;Derzeit ohne Funktion (Später z.B. HTTPS und HTTP oder HTTP/2 usw.)
|
||||||
|
lweb::#conf_cache_enable ;Bei wert auf 1 Setzen um zu Aktivieren diese Funktion ist aber derzeit mit Vorsicht zu geniessen!!!!
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Funktionen
|
||||||
|
`lweb::set_config(parameter.i=#conf_defaultfile, setting.s="index.html")`
|
||||||
|
|
||||||
|
Dass setting ist immer ein String.
|
||||||
|
|
||||||
|
Rückgabewert ist `#True` oder `#False.`
|
||||||
|
|
||||||
|
|
||||||
|
`lweb::get_config(parameter.i=#conf_defaultfile)`
|
||||||
|
|
||||||
|
Der Rückgabewert ist immer einen String.
|
||||||
|
|
||||||
|
### Starten des Servers
|
||||||
|
`lweb::start_server()`
|
||||||
|
|
||||||
|
Rückgabewert ist `#True` oder `#False.`
|
||||||
|
|
||||||
|
### Verschiedene arten des Handlers Registrieren & Proceduren:
|
||||||
|
|
||||||
|
`lweb::register_client_handler(Route.s, Callback.i, AppPrototype.i = #handler_proto_get, RouteType.i = #handler_sub)`
|
||||||
|
|
||||||
|
Rückgabewerte ist immer ein JSONString!
|
||||||
|
|
||||||
|
AppPrototype Möglichkeiten:
|
||||||
|
```
|
||||||
|
lweb::#handler_proto_universal ;Für HTTP POST und GET Requests Nimmt Optional einen String entgegen.
|
||||||
|
lweb::#handler_proto_post ;Nur für HTTP POST Requests Nimmt Zwingend einen String entgegen.
|
||||||
|
lweb::#handler_proto_get ;Nur für HTTP GET Requests Nimmt keinen String entgegen.
|
||||||
|
```
|
||||||
|
|
||||||
|
RouteType Möglichkeiten:
|
||||||
|
```
|
||||||
|
lweb::#handler_only ;Reagiert nur auf die Url (Bsp. /rest/v1/test aber nicht auf /rest/v1/test/sub)
|
||||||
|
lweb::#handler_sub ;Reagiert auf eine ganze Url die begint. (Bsp. /rest/v1/test sowie auch auf /rest/v1/test/sub)
|
||||||
|
lweb::#handler_type ;Reagiert auf datentypen (zb. *.php = "php")
|
||||||
|
```
|
||||||
|
|
||||||
|
Map für Antwort ist eine einfache Stringmap:
|
||||||
|
`NewMap Response.s()`
|
||||||
|
|
||||||
|
Wobei folgende werte entsprechend gesetzt werden müssen:
|
||||||
|
* `lweb::#cha_R_ResponseType = "ResponseType"` ;Element ResponseType,Mimetype mit `lweb::mimetype("html")` z.B. Setzen.
|
||||||
|
* `lweb::#cha_R_ResponseContentType = "ResponseContentType"` ;Element ResponseContentType, `lweb::#response_string` oder `lweb::#response_Memory`
|
||||||
|
* `lweb::#cha_R_MemoryAdress = "MemoryAdress"` ;Element MemoryAdress, Konvertieren zu String `Str(Adresse)` wird mit `Val()` zurückkonvertiert. Und nach dem Bearbeiten wieder freigegeben!
|
||||||
|
* `lweb::#cha_R_MemorySize = "MemorySize"` ;Element MemorySize, Konvertieren zu String `Str(Grösse)` wird mit `Val()` zurückkonvertiert.
|
||||||
|
* `lweb::#cha_R_StringBase64 = "StringBase64"` ;Element StringBase64, Base64 Encoded String
|
||||||
|
* `lweb::#cha_R_http_head_status = "HeaderStatus"` ;`"200 OK"`, `"300 Error"`, `"500 Server Error"` usw.
|
||||||
|
|
||||||
|
Zu beachten ist das entweder ein Base64 encodierter String oder ein MemoryBlock zurückgegeben werden muss!
|
||||||
|
|
||||||
|
Komplettes Beispiel:
|
||||||
|
```
|
||||||
|
Procedure.s Sample_Header(Map Header.s())
|
||||||
|
Define *Text
|
||||||
|
Define.s Encoded, ZumSenden, TBD
|
||||||
|
NewMap Response.s()
|
||||||
|
TBD="<div><div><h1>Header</h1></div><br/>"+#CRLF$
|
||||||
|
ResetMap(Header())
|
||||||
|
While NextMapElement(Header())
|
||||||
|
TBD = TBD+"<div>"+MapKey(Header())+" : "+Header()+" </div><br/>"+#CRLF$
|
||||||
|
Wend
|
||||||
|
|
||||||
|
*Text = UTF8("<!DOCTYPE html><html><header><title>Alle Client Headers</title></header><body>"+TBD+"</body></html>")
|
||||||
|
Encoded = Base64Encoder(*Text, MemorySize(*Text))
|
||||||
|
Debug "Encoded: " + Encoded
|
||||||
|
Response(lhs_web::#cha_R_ResponseContentType) = lhs_web::#response_string
|
||||||
|
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
||||||
|
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
||||||
|
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
||||||
|
ZumSenden = lhs_web::MapToJSONString(Response())
|
||||||
|
Debug "ZumSenden: " + ZumSenden
|
||||||
|
ProcedureReturn ZumSenden
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
lhs_web::register_client_handler("/server/show_client_headers", @Sample_Header(),lhs_web::#handler_proto_get, lhs_web::#handler_sub)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Einen Mimetype eines Fileextensions:
|
||||||
|
`lweb::mimetype(file.s)`
|
||||||
|
|
||||||
|
Gibt einen String zurück.
|
||||||
|
|
||||||
|
Konvertiert z.B. `lweb::mimetype("html")` zu `"text/html"`
|
||||||
|
|
||||||
|
### Eine Map in einen JSONString Konvertieren (z.B. in Interaktion mit einer Spiderbasic App)
|
||||||
|
`lweb::MapToJSONString(Map ConvertMap.s())`
|
||||||
|
|
||||||
|
Gibt einen String zurück.
|
||||||
|
|
||||||
|
Beispiel:
|
||||||
|
```
|
||||||
|
Response(lhs_web::#cha_R_ResponseContentType) = lhs_web::#response_string
|
||||||
|
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
||||||
|
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
||||||
|
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
||||||
|
ZumSenden = lhs_web::MapToJSONString(Response())
|
||||||
|
```
|
||||||
|
|
||||||
|
Ergib anschliessend einen String der wieder Zurückkonvertiert werden kann von der Hauptbearbeitungsprozedur (Client Thread in lweb.pbi).
|
||||||
|
|
||||||
|
### Verifizierung ob es eine Gültige IP Adresse ist (IPv6 und IPv4)
|
||||||
|
`lweb::IsIPStringValid(Adress.s)`
|
||||||
|
|
||||||
|
Beispiel:
|
||||||
|
```
|
||||||
|
setting = "192.168.256.12"
|
||||||
|
If lweb::IsIPStringValid(setting)
|
||||||
|
conf_binding = setting
|
||||||
|
Else
|
||||||
|
; Fehler
|
||||||
|
conf_binding = "127.0.0.1"
|
||||||
|
EndIf
|
||||||
|
```
|
||||||
|
ergibt einen Fehler und wird die Standard IP Setzen.
|
||||||
|
|
||||||
|
Rückgabewert ist `#True` oder `#False.`
|
||||||
|
|
2
lweb.pbi
2
lweb.pbi
|
@ -1000,7 +1000,7 @@ Module lhs_web
|
||||||
ProcedureReturn 0
|
ProcedureReturn 0
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure.s MapStringToJSONString(Map ConvertMap.s())
|
Procedure.s MapToJSONString(Map ConvertMap.s())
|
||||||
Protected MyJSON
|
Protected MyJSON
|
||||||
Protected.s Response
|
Protected.s Response
|
||||||
MyJSON = CreateJSON(#PB_Any)
|
MyJSON = CreateJSON(#PB_Any)
|
||||||
|
|
|
@ -83,7 +83,7 @@ DeclareModule lhs_web
|
||||||
Declare start_server()
|
Declare start_server()
|
||||||
Declare.s register_client_handler(Route.s, Callback.i, AppPrototype.i = #handler_proto_get, RouteType.i = #handler_sub)
|
Declare.s register_client_handler(Route.s, Callback.i, AppPrototype.i = #handler_proto_get, RouteType.i = #handler_sub)
|
||||||
Declare.s mimetype(file.s)
|
Declare.s mimetype(file.s)
|
||||||
Declare.s MapStringToJSONString(Map ConvertMap.s())
|
Declare.s MapToJSONString(Map ConvertMap.s())
|
||||||
Declare IsIPStringValid(Adress.s)
|
Declare IsIPStringValid(Adress.s)
|
||||||
|
|
||||||
EndDeclareModule
|
EndDeclareModule
|
|
@ -50,7 +50,7 @@ Procedure.s Sample_Header(Map Header.s())
|
||||||
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
||||||
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
||||||
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
||||||
ZumSenden = lhs_web::MapStringToJSONString(Response())
|
ZumSenden = lhs_web::MapToJSONString(Response())
|
||||||
Debug "ZumSenden: " + ZumSenden
|
Debug "ZumSenden: " + ZumSenden
|
||||||
ProcedureReturn ZumSenden
|
ProcedureReturn ZumSenden
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
@ -74,7 +74,7 @@ Procedure.s Formular_Test(Map Header.s(), ContentData.s)
|
||||||
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
||||||
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
||||||
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
||||||
ZumSenden = lhs_web::MapStringToJSONString(Response())
|
ZumSenden = lhs_web::MapToJSONString(Response())
|
||||||
Debug "ZumSenden: " + ZumSenden
|
Debug "ZumSenden: " + ZumSenden
|
||||||
ProcedureReturn ZumSenden
|
ProcedureReturn ZumSenden
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ Procedure.s Php_Test(Map Header.s(), ContentData.s)
|
||||||
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
Response(lhs_web::#cha_R_StringBase64) = Encoded
|
||||||
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
Response(lhs_web::#cha_R_ResponseType) = lhs_web::mimetype("html")
|
||||||
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
Response(lhs_web::#cha_R_http_head_status) = "200 OK"
|
||||||
ZumSenden = lhs_web::MapStringToJSONString(Response())
|
ZumSenden = lhs_web::MapToJSONString(Response())
|
||||||
Debug "ZumSenden: " + ZumSenden
|
Debug "ZumSenden: " + ZumSenden
|
||||||
ProcedureReturn ZumSenden
|
ProcedureReturn ZumSenden
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
Loading…
Reference in a new issue