Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Inhalt

Auszug

Hier stellen wir die in den User-Scripts verfügbaren Lua-Bibliotheken vor. 

Alle Bibliotheken können über local library = require("library-name") eingebunden und anschließend über library.function() verwendet werden.

Inhalt

Luau Standard-Bibliotheken

Die Runtime stellt die Standard Bibliotheken (https://luau.org/library) der Luau Runtime (zur Verfügung, mit folgenden Ausnahmen:

...

Zusätzlich zu den Standard-Bibliotheken werden nachfolgende Bibliotheken in der runtime bereitgestellt.

Zusätzliche Bibliotheken

fetch

Fetch erlaubt die Ausführung von http(s) Requests.

fetch(request: RequestOptions|string): Response

fetch ist ein Alias auf fetch.fetch(...)

fetch.fetch(request: RequestOptions|string): Response

`RequestOptions` RequestOptions ist entweder:-

  • eine URL als Zeichenkette, in dem Fall wird ein GET Request auf die URL ausgeführt.

...

  • eine Tabelle mit den folgenden Eigenschaften:

      ...

        • url(

      ...

        • string): Die URL als Zeichenkette an welche der Request gesendet wird.

      ...

        • method(

      ...

        • string): Die Methode mit der der Request abgesendet wird. Erlaubte Werte

      ...

        • "GET"

      ...

        • ,

      ...

        • "POST"

      ...

        • ,

      ...

        • "PUT"

      ...

        • ,

      ...

        • "PATCH"

      ...

        • ,

      ...

        • "DELETE"

      ...

        • . Standardwert wenn nicht angegeben:

      ...

        • GET. "OPTIONS"

      ...

        • &

      ...

        • "HEAD"

      ...

        • werden aktuell absichtlich nicht unterstützt.

      ...

        • headers(

      ...

        • string): Eine Tabelle aus Strings, wobei der Schlüssen der Name des Headers ist und der Wert der Wert des Headers.

      ...

        • Invalide Header führen zum Abbruch des Requests. Aus Sicherheitsgründen akzeptieren wir nur die Header

      ...

        • accept,

      ...

        • authorization,

      ...

        • content-

      ...

        • type &

      ...

        • cache-

      ...

        • control. Wenn beim Testen auffällt, das weitere Header benötigt werden: aufschreiben!

      ...

        • body(

      ...

        • string): Der Inhalt des Requests.

      ...

        • follow_

      ...

        • redirects(

      ...

        • bool): Wenn

      ...

        • true wird bei 301/302 Umleitungen der neuen URL gefolgt. Wir unterstützen eine maximale Anzahl von 5 Umleitungen. Wenn

      ...

        • false wird die Antwort des Requests unabhängig vom Status Code zurückgegeben. Standardwert:

      ...

        • true

      ...

        • timeout(

      ...

        • number): Dauer in Millisekunden nach der der Request abgebrochen werden soll. Sollte der Wert höher als das von Divera gesetzte Limit sein, wird er Ignoriert.

      ...

        • disable_certificate_

      ...

        • validation(

      ...

        • bool): Wenn gesetzt wird das Zertifikat bei

      ...

        • HTTPS Requests nicht geprüft, nur zur Nutzung mit selbst signierten Zertifikaten gedacht. Standardwert:

      ...

        • false.

      Die URL ist das einzige Pflichtfeld.

      Codeblock
      languagebash
      themeEmacs
      titleBeispiel eines Requests

      ...

      ...

      local  fetch = require("fetch"

      ...

      )
      local response = fetch({

      ...

      
        url = "https://webhook.site/", -- TODO: 'ne URL mit ID einfügen oder noch besser: Als Formular Feld konfigurierbar machen.

      ...

      
        method = "POST",

      ...

      
        headers = {
          ["content-type"] = "text/plain"

      ...

      
        },

      ...

      
        body = "Test eines POST Requests im User-Script mit fetch.fetch"
      }) 
      
      

      fetch.get(url: string, options: RequestOptions | nil): Response

      Shortcut für GET-Requests. options ist eine optionale Tabelle mit den möglichen Eigenschaften headers, follow_redirects, timeout und disable_certificate_validation. Die Bedeutung der Eigenschaften ist im Abschnitt fetch.fetch erklärt.

      Codeblock
      languagebash
      themeEmacs
      titleBeispiel eines GET-Requests
      local fetch = require("fetch")
      local response = fetch.get("

      ...

      https://v2.jokeapi.dev/joke/Any?lang=de&format=txt&type=single&safe-mode")
      
      print(response.body)
      
      

      fetch.post(url: string, payload: { data: string, contentType: string }, options: RequestOptions)

      Das Argument payload enthält die Eigenschaften

      • contentType: Der Content-Type Header als Shortcut.
      • data: Die im Request als Body übergebenen Daten.

      Das Argument options ist im Abschnitt fetch.get erklärt.

      Codeblock
      languagebash
      themeEmacs
      titleBeispiel eines POST-Requests
      local fetch = require("fetch")
      local response = fetch.post(
        "https://webhook.site/...", -- TODO: URL mit ID einfügen oder besser: Im Formular als Feld einfügen
        { 
          contentType = "application/json", 
          data = "Test eines POST Request im User-Script mit fetch.post"
        }
      )
        

      fetch.put(url: string, payload: { data: string, contentType: string }, options: RequestOptions)

      Die Argumente sind die selben wie bei fetch.post und dort erklärt.

      fetch.patch(url: string, payload: { data: string, contentType: string }, options: RequestOptions)

      Die Argumente sind die selben wie bei fetch.post und dort erklärt.

      fetch.delete(url: string, payload: { data: string, contentType: string }, options: RequestOptions)

      Die Argumente sind die selben wie bei fetch.post und dort erklärt.

      json

      Eine für unsere Runtime modifizierte Version von json.lua. Die im Repository erwähnten "opional advanced features" sind nicht in unserer Version vorhanden.

      json.encode(value: any): string

      Kodiert eine Lua Tabelle oder Wert als json-string. Hinweis: Funktionen werden nicht unterstützt und lösen einen Fehler aus.

      json.decode(value: string): Any

      Dekodiert einen json string in eine Lua Tabelle (oder anderweitigen Wert). JSON nullwird nicht als nil dekodiert, sondern als json.null.

      json.createEmptyObject()

      Normalerweise wird eine leere Tabelle ({}) als leeres JSON-array ([]) kodiert, mit json.createEmptyObject() wird eine leere Tabelle mit Meta-Informationen erzeugt, wodurch sie als leeres JSON Objekt ({}) serialisiert wird.

      json.isObject(value: Table)

      Gibt zurück, ob eine Tabelle entweder eine leere Tabelle erzeugt mit json.createEmptyObject ist oder eine Tabelle mit nicht-numerischen Schlüsseln.

      xml

      Zur Verarbeitung von XML werden folgende Lua-Bibliotheken aus dem Modul xml2lua bereitgestellt:

      • xml2lua
      • xmlhandler.tree
      • xmlhandler.dom
      • XmlParser

      XML-String in eine Lua-Table konvertieren

      Codeblock
      languagebash
      themeEmacs
      titleBeispiel zum Konvertieren von XML
      local xml2lua = require("xml2lua")
      local handler = require("xmlhandler.tree")
      
      local xml = [[
      <?xml version="1.0" encoding="UTF-8"?>
      <Table name="Einsatzdaten">
        <Data type="STRING" header="Einsatznummer"/>
        <Data type="STRING" header="Einsatzstichwort"/>
        <Data type="STRING" header="Meldebild"/>
        <Row>
          <Column value="1234567890"/>
          <Column value="B2.5"/>
          <Column value="Rauchentwicklung in / aus Geb&#228;ude unklar"/>
        </Row>
      </Table>
      ]]
      
      local parser = xml2lua.parser(handler)
      parser:parse(xml)

      Lua-Table in einen XML-String konvertieren

      Codeblock
      languagebash
      themeEmacs
      titleBeispiel zum Erzeugen von XML
      local xml2lua = require("xml2lua")
      local incidents = {
        Table = {
          _attr = { name='Einsatzdaten' },   
          Data = {
            { _attr={ type='STRING', header='Einsatznummer' } },
            { _attr={ type='STRING', header='Einsatzstichwort' } }, 
            { _attr={ type='STRING', header='Meldebild' } }
          },
          Row = {
            Column = {
              { _attr={ value='1234567890' } },
              { _attr={ value='B2.5' } }, 
              { _attr={ value='Rauchentwicklung in / aus Gebäude unklar' } }
            }
          }
        }
      }
      
      print("Einsätze als XML Repräsentation\n")
      print(xml2lua.toXml(incidents))

      Schritt-für-Schritt-Anleitung

      info


      Verwandte Artikel

      Inhalt nach Stichwort
      showLabelsfalse
      max5
      spacesFAQ
      showSpacefalse
      sortmodified
      reversetrue
      typepage
      cqllabel = in ("kb-how-to-article","user-scripts") and type = "page" and space = "FAQ"
      labelskb-how-to-article

      ...

      Seiteneigenschaften
      hiddentrue
      Verwandte Vorgänge