Rewrite HTTP
Users can modify the HTTP requests and responses flowing through Stash via JavaScript scripts.
Configuration Format
http:
script:
- match: url-you-want-to-match
name: your-fancy-script
type: response # request / response
require-body: true
timeout: 20
argument: ''
binary-mode: false
max-size: 1048576 # 1MB
script-providers:
your-fancy-script:
url: https://your-fancy-script.com/your-fancy-script.js
interval: 86400Parameters:
match: The URL regular expression that the script matches.type: The type of script, optional values arerequestorresponse.require-body: Whether the request body / response body is needed, processing the body in the script requires more memory space, enable only when necessary.timeout: The script execution timeout, in seconds.argument: The argument when the script is executed, type isstring.binary-mode: Binary mode,bodywill be passed to the script asUint8Arrayinstead ofstring.max-size: In bytes, requests with a body size exceeding this will not trigger the script.
💡
Binary mode is only supported in Stash iOS 2.0.2 and later versions.
Request Object
$request.url: Request URL$request.method: Request method$request.headers: Request headers$request.body: Request body, only available whenrequire-body: true, can bestringorUint8Arraydepending on whether binary mode is enabled.
Response Object
$request.url: Request URL$request.method: Request method$request.headers: Request headers$response.status: Response status code$response.headers: Response headers$response.body: Response body, only available whenrequire-body: true, can bestringorUint8Arraydepending on whether binary mode is enabled.
$done(value)
⚠️
For all scripts, you must call the $done(value) method to release resources at the end.
For scripts of the request type, calling $done(object) can rewrite the HTTP request, object can include the following fields:
url: Modify the request URLheaders: Modify the request headersbody: Modify the request bodyresponse: Replace the HTTP response, no longer actually send the HTTP request
You can call $done() to interrupt the request, or $done({}) to not modify any content of the request.
For scripts of the response type, calling $done(object) can rewrite the HTTP response, object can include the following fields:
status: Modify the response status codeheaders: Modify the response headersbody: Modify the response body
You can call $done() to interrupt the request, or $done({}) to not modify any content of the response.