If you like BoxMatrix then please contribute Supportdata, Supportdata2, Firmware and/or Hardware (get in touch).
My metamonk@yahoo.com is not reachable by me since years. Please use hippie2000@webnmail.de instead.
Property:espresso.lua
BoxMatrix >> Webinterface >> espresso.lua | @ BoxMatrix - IRC-Chat - Translate: de es fr it nl pl |
News | Selectors | Models | Accessories | Components | Environment | Config | Commands | System | Webif | Software | Develop | Lexicon | Community | Project | Media |
UI-Structure | UI-Modules | HTML-Files | XML-Files | Lua-Scripts | Javascript | Browser | SSI-Files | SSI-Directives | HTML-Text | Event-Text | Help-Pages | CSS-Files | Graphics | Research |
Lua-Script
Lua-Script: | espresso.lua - type Script | Wiki | Freetz | IPPF | whmf | AVM | Web |
Location: | Webinterface >> Lua-Scripts - Origin: AVM | ||||||
Path: | Release: /usr/rest_api Lab+Rel: /usr/rest_api | ||||||
Properties: | Size: 7.9k - 10.4k - Firmware: 7.39 - 8.00 | ||||||
Function: | REST-API URL to function router |
Goto: Functions - Dependencies - Model-Matrix - SMW-Browser
Details
espresso.lua is the REST-API URL to function router. It is included by api.lua.
It creates a tree of function callbacks which are called depending on HTTP request URI and request method.
Excerpt from fw 7.50:
Espresso is an url to function router for REST APIs. It is loosely designed after the node.js module Express (https: Further development should be go into the direction of the Express API. usage: Create new router with: local app = Espresso.new() Configure the API by define app:get("/api/v0/overview", send_overview) -- gets called on GET requests to /api/v0/overview app:post("/api/v0/users", add_new_user) -- gets called on POST requests to /api/v0/users On incoming requests route the requests url and method to the configured callback app:call(url_path, method) Set optional default callback if given path/method combination could not be found: app:set_not_found_cb(callback_function) Generics: For variable paths to the same callback, a generic placeholders could be used. app:get("api/v0/<string>") -- routes GET requests like /api/v0/module1 or /api/v0/config3 directly configured paths still has precedence over generics. A list with the generic url parts will be given to the callback function.
- Lexicon: REST-API
- Commands: scgi_server
- Ports: Port-8187-tcp
- UI-Mods: webui
- API-Root: api.lua
- Includes: api_generic.lua, rest_config.lua, security.lua, espresso.lua
- Includes: rest_api_const.lua, response.lua, error.lua, avmluamessages.lua
- Includes: uimod.lua, api_generic_filter.lua, resource.lua
- Modules: storagenasrights_rest.lua, webusb_rest.lua
- Modules: calllog_rest.lua, faxjournal_rest.lua, phonebook_rest.lua
- Modules: smarthome_rest.lua, boxnotify_rest.lua
- Develop: obl_fboxname.lua, dev_debug.lua, landevice.lua
- Develop: query_tree.lua, fake_modules.lua, obl.lua
Functions
The function names of scripts often help to understand function blocks (and show gaps in the docs). fw 7.50 functions:
$ grep -e '^function' -e '^local function' /usr/rest_api/espresso.lua # Create a new _FpTreeNode that is used for the Espresso search tree. function _FpTreeNode.new() # Find the next _FpTreeNode for a given URL part function _FpTreeNode:find_next(url_part, generics) # Create a new linked _FpTreeNode for the next part in an URL. function _FpTreeNode:build_next(url_part) # Split an URL path into a list of parts. local function split_path(path_str) # Create a new Espresso object. function Espresso.new() # Build necessary nodes in the search tree for a given URL path. function Espresso._build_tree_branch(url, root_node) # Find a search tree node for a given URL path. function Espresso._find_tree_node(path, root_node) # Register a callback on a HTTP get method. function Espresso:get(path, fp) # Register a callback on a HTTP post method. function Espresso:post(path, fp) # Register a callback on a HTTP put method. function Espresso:put(path, fp) # Register a callback on a HTTP delete method. function Espresso:delete(path, fp) # Register a callback on all HTTP methods. function Espresso:all(path, fp) # Define a callback that is used when no callback could be found for an url/method combination. function Espresso:set_not_found_cb(fp) # Search the tree for a registered callback and jump into it. function Espresso:call(path, method_str)
Dependencies
Daily updated index of all dependencies of this script. Last update: 2024-11-14 08:31 GMT.
A *
in the Mod
column marks info from Supportdata-Probes, which will always stay incomplete.
If an Object
includes itself then this is a file with the same name but another Path
and the dependencies are merged.
Relation | Typ | Object | Mod | Firmware | Info | Origin |
---|---|---|---|---|---|---|
Requires | lua | avmluamessages.lua | 32 | 7.39 - 7.63 | REST-API Debug Message Printer | AVM |
Required by | lua | api.lua | 37 | 7.39 - 8.00 | REST-API Lua-Land root for scgi_server | AVM |
2 dependencies for this script |
Model-Matrix
Daily updated index of the presence, path and size of this script for each model. Last update: 2024-11-14 06:51 GMT.
Showing all models using this script. Click any column header (click-wait-click) to sort the list by the respective data.
The (main/scrpn/boot/arm/prx/atom/rtl)
label in the Model
column shows which CPU is meant for Multi-Linux models.
Note that this list is merged from Firmware-Probes of all known AVM firmware for a model, including Recovery.exe and Labor-Files.
Model | Firmware | Path | Size/Bytes |
---|---|---|---|
FRITZ!Box 4040 | 7.39 - 8.00 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 4050 | 7.58 - 7.90 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 4060 | 7.39 - 7.90 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 5530 Fiber (main) | 7.39 - 8.00 | /usr/rest_api | 7.9k - 10.4k |
FRITZ!Box 5590 Fiber (main) | 7.39 - 8.00 | /usr/rest_api | 7.9k - 10.4k |
FRITZ!Box 5590 Fiber (prx) | 7.70 - 8.00 | /usr/rest_api | 7.9k - 10.4k |
FRITZ!Box 5690 Pro (main) | 7.62 - 7.90 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 6490 Cable (atom) | 7.39 - 7.51 | /usr/rest_api | 8.7k |
FRITZ!Box 6590 Cable (atom) | 7.39 - 7.51 | /usr/rest_api | 8.7k |
FRITZ!Box 6591 Cable (arm) | 8.00 | /usr/rest_api | 10.4k |
FRITZ!Box 6591 Cable (atom) | 7.39 - 8.00 | /usr/rest_api | 8.5k - 10.4k |
FRITZ!Box 6660 Cable (arm) | 7.90 - 8.00 | /usr/rest_api | 10.4k |
FRITZ!Box 6660 Cable (atom) | 7.39 - 8.00 | /usr/rest_api | 8.5k - 10.4k |
FRITZ!Box 6670 Cable (arm) | 7.90 | /usr/rest_api | 10.4k |
FRITZ!Box 6670 Cable (atom) | 7.61 - 7.90 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 6690 Cable (arm) | 7.90 | /usr/rest_api | 10.4k |
FRITZ!Box 6690 Cable (atom) | 7.39 - 7.90 | /usr/rest_api | 8.5k - 10.4k |
FRITZ!Box 6820 LTE v1 (main) | 7.51 | /usr/rest_api | 8.7k |
FRITZ!Box 6820 LTE v2 (main) | 7.51 | /usr/rest_api | 8.7k |
FRITZ!Box 6820 LTE v3 (main) | 7.51 - 7.57 | /usr/rest_api | 8.7k |
FRITZ!Box 6850 LTE | 7.39 - 7.90 | /usr/rest_api | 8.5k - 10.4k |
FRITZ!Box 6850 5G | 7.39 - 7.90 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 6890 LTE (main) | 7.39 - 7.57 | /usr/rest_api | 8.5k - 8.7k |
FRITZ!Box 6890 LTE v1 (main) | 7.39 - 7.57 | /usr/rest_api | 8.5k - 8.7k |
FRITZ!Box 6890 LTE v2 (main) | 7.39 - 7.57 | /usr/rest_api | 8.5k - 8.7k |
FRITZ!Box 7490 (main) | 7.51 | /usr/rest_api | 8.7k |
FRITZ!Box 7510 | 7.39 - 8.00 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 7520 | 7.39 - 8.00 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 7520 v2 (main) | 7.39 - 8.00 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 7530 | 7.39 - 8.00 | /usr/rest_api | 8.5k - 10.4k |
FRITZ!Box 7530 AX | 7.39 - 8.00 | /usr/rest_api | 7.9k - 10.4k |
FRITZ!Box 7583 (main) | 7.50 - 7.59 | /usr/rest_api | 8.7k |
FRITZ!Box 7583 VDSL (main) | 7.59 - 8.00 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Box 7590 (main) | 7.39 - 8.00 | /usr/rest_api | 8.5k - 10.4k |
FRITZ!Box 7590 AX (main) | 7.39 - 8.00 | /usr/rest_api | 7.9k - 10.4k |
FRITZ!Box 7690 | 7.61 - 7.90 | /usr/rest_api | 8.7k - 10.4k |
FRITZ!Repeater 2400 | 7.39 | /usr/rest_api | 8.5k |
37 models use this script |