Scripting
Created by: Commander-lol
This PR adds in scripting support, allowing you to handle certain requests with dyon rhai lua scripts, as defined in the .swerve/config.yml file.
Script files should live inside the .swerve folder of a project so as to avoid cluttering the project that swerve is hosting. Currently there are no plans to support loading scripts from outside of the .swerve folder, but cross-project scripts could be handled quite easily by symlinking from a common script folder.
Scripts are specified as a handler for a route entry in the config.yml file, in the format
routes:
- route: /path/@param
script: my_script.lua
Any routing params will match that section of the URL, and will be available inside the script as a property on the params table (e.g. the previous example would expose params.param inside the lua script).
An empty response object can be created with the empty_response() global, or a fully fleshed out response can be created with the response(status_code, content_type, body_string) global.
A response object exposes the following methods:
response:set_status(status_code)response:set_header(header, value)response:set_body(body_string)response:unset_body()
A script must return a response object
A response handler type in the config.yml (check the example's /users route) is currently supported, but will not register a handler as there is currently no implementation for it
Closes #1 (closed)