Module server.Funktion
Funktion - CASYMIR REST API Standard Funktionen (Intern)
Functions
RESTFunktion.err (severity, msg, ...) | err erzeugt eine Error meldung im Casy log mit Nummerierter ausgabe |
RESTFunktion.sql_check_errors (conn[, errmsge]) | sql_check Prüft ob in der SQL Verbindung ein fehler besteht |
RESTFunktion.QuerySplit (query[, sort]) | QuerySplit Erzeugt eine Table aus dem Querystring |
RESTFunktion.casylog (log[, t]) | casylog Erzeugt einen Eintrag im Casylog, Table werden Rekursiv ausgefürt |
RESTFunktion.Reflink (T, Verweis, ID[, methode[, Verweisrel[, parameter]]]) | Reflink Durchsucht eine Tabelle nach der ID und erzeugt einen links abschnitt Der Link wird auf die Ebene der ID angefügt |
RESTFunktion.isoMappingTo639 (T, ID) | ISO Mapping zu ISO-639-2B AdrSprache (Ausgang) von Casy intern zu ISO Standard |
RESTFunktion.isoMappingFrom639 (T, ID) | ISO Mapping von ISO-639-2B AdrSprache (Eingang) von ISO Standard zu Casy Intern |
RESTFunktion.isoMappingTo3166 (T, ID) | ISO Mapping zu ISO 3166 ALPHA-2 OrtLand (Ausgang) von Casy intern zu ISO Standard |
RESTFunktion.isoMappingFrom3166 (T, ID) | ISO Mapping From ISO 3166 ALPHA-2 OrtLand (Eingang) von ISO Standard zu Casy Intern |
RESTFunktion.mustenter (T, ID[, mehrstufig]) | Muss Felder im Body |
RESTFunktion.sql_table (DB, sql[, UTC]) | Abruf SQl Befehl aus Datenbank $VARIABLE werden ersetzen aus den Local(prio), Global(sec) else '' |
RESTFunktion.Debug (Variable[, Text[, endl[, textausgabe]]]) | Debug Erzeugt ab Level 6 Casylog einträge, ab 7 Wird eine Datei Angelegt Webzugriff |
RESTFunktion.SortSql (queryStr) | SortSql ersetzt das vorzeichen welches vom Query stammt durch ein sql Code Interne Funktion von QuerySplit |
RESTFunktion.Status (code) | Statusmeldungen werden vorm Header senden umgemapt, DB Log des Status erfolgt vor Mapping https://support.casymir.ch/wiki/doku.php?id=support:optools:technotes:restapi#head |
RESTFunktion.errBody (Status, msg, Daten) | Standard Error Meldung für Head und Body |
RESTFunktion.TmpFilename ([Prefix[, Ext]]) | TmpFilename erzeugen. |
RESTFunktion.CreateTmpFile ([Prefix[, Ext[, methode]]]) | TmpFile kreieren. |
Functions
- RESTFunktion.err (severity, msg, ...)
-
err erzeugt eine Error meldung im Casy log mit Nummerierter ausgabe
Parameters:
- RESTFunktion.sql_check_errors (conn[, errmsge])
-
sql_check Prüft ob in der SQL Verbindung ein fehler besteht
Parameters:
- conn userdata -- DB verbindung welche auf Fehler und Mitteilungen geprüft wird
- errmsge string fehlermeldung (optional)
Returns:
-
string
Error Message
Usage:
local errmsg = RESTFunktion.sql_check_errors(conn,err) if errmsg then retBody['error_description'] = 'Endpunkt DB Fehler: sql_check_errors ' .. tostring(errmsg) return retBody end
- RESTFunktion.QuerySplit (query[, sort])
-
QuerySplit Erzeugt eine Table aus dem Querystring
Parameters:
- query string Verarbeitung des Query string von der URL
- sort bool Sortierung +- in sql umwandeln (optional)
Returns:
Usage:
GET /www/artikel/C202?waehrabk=EUR&debinr=123456 query = RESTFunktion.QuerySplit(QueryStr,true) local field = query.fields [nil] local sort = query.sorts [nil] local waehrabk = query.waehrabk ['EUR'] local debinr = query.debinr ['123456'] Optional kann die Sortierung +- in SQL String umgewandelt werden
- RESTFunktion.casylog (log[, t])
-
casylog Erzeugt einen Eintrag im Casylog, Table werden Rekursiv ausgefürt
Parameters:
- log mix Inhalt zum Casylog
- t string Bezeichnung (optional)
Usage:
local debiNr = '123456' RESTFunktion.casylog(debiNr,'Nummer Debi') May 17 17:31:41 victoria ?: (kommerz) 20733 - Nummer Debi: 123456
local t = {debiNr = '123456',kredNr = '654321'} RESTFunktion.casylog(t) May 17 17:31:41 victoria ?: (kommerz) 20733 - debiNr: 123456 May 17 17:31:41 victoria ?: (kommerz) 20733 - kredNr: 654321
- RESTFunktion.Reflink (T, Verweis, ID[, methode[, Verweisrel[, parameter]]])
-
Reflink Durchsucht eine Tabelle nach der ID und erzeugt einen links abschnitt
Der Link wird auf die Ebene der ID angefügt
Parameters:
- T table -- Tabele welche Rekursiv durchsucht wird
- Verweis string -- Auf welche URI Verweist wird ohne Pattern
- ID string -- Wert der die Pattern abbildet
- methode string/table -- Methode mit welcher der Link geht default GET (optional)
- Verweisrel string -- Bedeutung Link, Relation kann leerzeichen Enthalten (optional)
- parameter table -- '{parameter,feld mit wert}' (optional)
Returns:
Usage:
data, err = RESTFunktion.sql_table(DB,_sql) data = RESTFunktion.Reflink(data,'artikel/','ArtNr'.'GET') data = RESTFunktion.Reflink(data,'artikel/','ArtNr'.{'GET','PATCH'}) data = RESTFunktion.Reflink(data,'artikel/','ArtNr') "links": [ { "rel": "artikel/", "type": "GET", "href": "https://casyrest.opag.loc/www/artikel/C202" } ]
- RESTFunktion.isoMappingTo639 (T, ID)
-
ISO Mapping zu ISO-639-2B AdrSprache (Ausgang)
von Casy intern zu ISO Standard
Parameters:
- T table -- Daten Tabel welches durchsucht wird
- ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping
Returns:
-
table
T -- Modifizierte
Usage:
data, err = RESTFunktion.sql_table(DB,_sql) print(data["AdrSprache"]) = "D" data = RESTFunktion.isoMappingTo639(data,'AdrSprache') print(data["AdrSprache"]) = "ger"
- RESTFunktion.isoMappingFrom639 (T, ID)
-
ISO Mapping von ISO-639-2B AdrSprache (Eingang)
von ISO Standard zu Casy Intern
Parameters:
- T table -- Daten Tabel welches durchsucht wird
- ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping
Returns:
-
table
T -- Modifizierte
Usage:
print(BodyTable["AdrSprache"]) = "ger" BodyTable = RESTFunktion.isoMappingFrom639(BodyTable,'AdrSprache') print(BodyTable["AdrSprache"]) = "D"
- RESTFunktion.isoMappingTo3166 (T, ID)
-
ISO Mapping zu ISO 3166 ALPHA-2 OrtLand (Ausgang)
von Casy intern zu ISO Standard
Parameters:
- T table -- Daten Tabel welches durchsucht wird
- ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping
Returns:
-
table
T -- Modifizierte
Usage:
data, err = RESTFunktion.sql_table(DB,_sql) print(data["OrtLand"]) = "CH" data = RESTFunktion.isoMappingTo3166(data,'AdrSprache') print(data["OrtLand"]) = "CH"
- RESTFunktion.isoMappingFrom3166 (T, ID)
-
ISO Mapping From ISO 3166 ALPHA-2 OrtLand (Eingang)
von ISO Standard zu Casy Intern
Parameters:
- T table -- Daten Tabel welches durchsucht wird
- ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping
Returns:
-
table
T -- Modifizierte
Usage:
print(BodyTable["OrtLand"]) = "DE" BodyTable = RESTFunktion.isoMappingFrom3166(BodyTable,'AdrSprache') print(BodyTable["OrtLand"]) = "D"
- RESTFunktion.mustenter (T, ID[, mehrstufig])
-
Muss Felder im Body
Parameters:
- T table --Orginal Table welches geprüft wird
- ID table -- Felder die vorhanden sein müssen. Beispiel: {'OrtPLZ',{'AdrFirma','AdrName'}} OrtPLZ muss vorhanden, (AdrFirma oder AdrName)
- mehrstufig boolean -- Suche nur in der ersten Ebene oder rekursiv default false (optional)
Returns:
-
boolean
-- false kein fehler else table mit Fehlenden Angaben
Usage:
local _mussField = {'KontaktAdr','WaehrAbk','FAKTZahlArt'} data = RESTFunktion.mustenter(BodyTable,_mussField,false) if data then status = 26 msg = 'There are missing fields ' retBody = { success = success, ['msg'] = tostring(msg), ['Status'] = status, ['Data'] = { ['mustenter'] = _mussField, ['missing'] = data } } return retBody end
- RESTFunktion.sql_table (DB, sql[, UTC])
-
Abruf SQl Befehl aus Datenbank
$VARIABLE werden ersetzen aus den Local(prio), Global(sec) else ''
Parameters:
- DB
userdata
- Datenbank verbindung
- sql
string
- Sql zum ausführen
- UTC
boolean
- Modified_UTC Zeit umrechnen default false
Returns:
Usage:
local AdrNr = 123 local PH ='ERTZ' local key = 'tzui' _sql = [[ select a.AdrNr from Adressen a, FirmHist ph, Kunde k where a.AdrNr = $AdrNr and ph.PHKey = '$PH' and ph.AbDatum <= getdate() and getdate() <= isnull(ph.BisDatum, getdate()) and ph.FirmenID = k.FirmenID and ph.Contents = '$key' and (k.KundLief = $AdrNr or k.KundRech = $AdrNr or k.KundKontakt = $AdrNr) ]] local Pdata, err = RESTFunktion.sql_table(DB,_sql) if err then status = 22 msg = 'DB Error from Endpoint: '.. tostring(err) retBody = { success = success, ['msg'] = tostring(msg), ['Status'] = status, ['Data'] = data } return retBody end
- DB
userdata
- RESTFunktion.Debug (Variable[, Text[, endl[, textausgabe]]])
-
Debug Erzeugt ab Level 6 Casylog einträge, ab 7 Wird eine Datei Angelegt Webzugriff
Parameters:
- Variable mix wird Ausgegeben bei table findet eine Rekursion
- Text string Bezeichnungstext zum ersten parameter (optional)
- endl int Fügt die Anzahl der Zeilen umbrüche hinzu (optional)
- textausgabe bool intern use bei Rekursion ob Text ausgeben werden soll (optional)
Usage:
local Status = 22 RESTFunktion.Debug(Status,'Status',1)
- RESTFunktion.SortSql (queryStr)
-
SortSql ersetzt das vorzeichen welches vom Query stammt durch ein sql Code
Interne Funktion von QuerySplit
Parameters:
- queryStr string sucht Zeichen vor dem Text und ersetzt diese am ende
Returns:
- RESTFunktion.Status (code)
-
Statusmeldungen werden vorm Header senden umgemapt,
DB Log des Status erfolgt vor Mapping
https://support.casymir.ch/wiki/doku.php?id=support:optools:technotes:restapi#head
Parameters:
- code int,string Interne Code umwandlung in HTTPStatus
Returns:
-
int
HTTP Status Code
- RESTFunktion.errBody (Status, msg, Daten)
-
Standard Error Meldung für Head und Body
Parameters:
- Status int -- Nummer für den Status
- msg string -- Meldeung welche erscheint
- Daten mix -- Daten die angehängt werden sollen body
Returns:
-
table
-- Tabelle welche direkt an return gegeben werden kann
Usage:
Waehr, err = RESTFunktion.sql_table(DB,_sql,false) if err then return RESTFunktion.errBody(22,'DB Error from Endpoint: ' .. tostring(err),Waehr) end
- RESTFunktion.TmpFilename ([Prefix[, Ext]])
-
TmpFilename erzeugen.
Erzeugt einen Pfadnamen für eine temporäre Datei.
Parameters:
- Prefix
string
- Dateiname Vorspann, Default nil
- Ext
string
- Dateiname Abspann z.B '.pdf', Default nil
Returns:
-
Filename
- Dateiname
Usage:
RESTFunktion.TmpFilename('Test_','.pdf') Test_lua_q9VA6Y.pdf local basename = RESTFunktion.TmpFilename() if not basename then return RESTFunktion.errBody(26, 'Cannot create Tempdir') end -- basename == /home/kommerz/tmp/lua_q9VA6Y
- Prefix
string
- RESTFunktion.CreateTmpFile ([Prefix[, Ext[, methode]]])
-
TmpFile kreieren.
Erzeugt eine temporäre Datei und öffnet diese zum Beschreiben.
Parameters:
- Prefix
string
- Dateiname Vorspann, Default nil
- Ext
string
- Dateiname Abspann z.B '.pdf', Default nil
- methode
string
- Default 'w' @see https://www.casymir.ch/files/gtkdoc3/lua/manual.html#pdf-io.open
Returns:
-
Datei
- Filehandle
-
FilePath
- DateiPath/Name
Usage:
local file, basename = RESTFunktion.CreateTmpFile('Test_','.pdf','wb') if not file then return RESTFunktion.errBody(26, 'Cannot create Tempfile') end -- file == file (0xe96250) '/home/kommerz/log/tmp/Test_lua_q9VA6Y.pdf' -- basename == /home/kommerz/log/tmp/lua_q9VA6Y file:write('abc') file:close()
- Prefix
string