The following section provides a sample code for a Before Download Worker.
export default async (context: PlatformContext, data: BeforeDownloadRequest): Promise<BeforeDownloadResponse> => { console.log(await context.clients.platformHttp.get('/artifactory/api/system/ping')); console.log(await axios.get('https://my.external.resource')); return { status: 'DOWNLOAD_PROCEED', message: 'proceed', } }
Input Parameters
Note: Input parameters are injected globally so you may access them even if when the parameters are not set in the function signature. They are put in the sample as parameters for convenience.
context
Provides baseUrl, token, and clients to communicate with the JFrog Platform (for more information, see PlatformContext).
data
The request with download details sent by Artifactory.
{ "metadata": { // Various immutable download metadata "repoPath": { // The repository path object of the request "key": "key", // The repository key "path": "path", // The path itself "id": "key:path", // The key:path combination "isRoot": false, // Is the path the root? "isFolder": false // Is the path a folder? }, "originalRepoPath": { // The original repository path if a virtual repository is involved "key": "key", "path": "path", "id": "key:path", "isRoot": false, "isFolder": false }, "name": "name", // The file name from path "headOnly": false, // Is it a head request? "checksum": false, // Is it a checksum request? "recursive": false, // Is it a recursive request? "modificationTime": 0, // When a modification has occurred "directoryRequest": false, // Is it a directory request? "metadata": false, // Is it a metadata request? "lastModified": 1, // Last modification time that occurred "ifModifiedSince": 0, // If a modification happened since the last modification time "servletContextUrl": "base", // The URL that points to Artifactory "uri": "jfrog.com", // The request URI "clientAddress": "localhost", // The client address "zipResourcePath": "", // The resource path of the requested zip "zipResourceRequest": false, // Is the request a zip resource request? "replaceHeadRequestWithGet": false, // Should the head request be replaced with GET? "repoType": 1 // Repository type }, "headers": { // The immutable request headers "key": { "value": [] } }, "userContext": { // The user context that sends the request "id": "id", // The username or subject "isToken": false, // Is the context an accessToken? "realm": "realm" // The realm of the user }, "repoPath": { // The response repository path "key": "key", "path": "path", "id": "key:path", "isRoot": false, "isFolder": false } }
Response
{ status: 'DOWNLOAD_PROCEED', // The instruction on how to proceed message: 'proceed', // Message to print to the log. If an error occures, it will be printed as a warning. }
Possible Statuses
DownloadStatus.DOWNLOAD_PROCEED
- The worker allows to proceed with download.DownloadStatus.DOWNLOAD_STOP
- The worker forbids download. Download will be aborted.DownloadStatus.DOWNLOAD_WARN
- The worker allows to proceed with download. A warning log with the provided message will be recorded in Artifactory.