The following section provides a sample code for a Before Token Expiry worker.
export default async ( context: PlatformContext, data: BeforeTokenExpiryRequest ): Promise<BeforeTokenExpiryResponse> => { try { // The in-browser HTTP client facilitates making calls to the JFrog REST APIs //To call an external endpoint, use 'await context.clients.axios.get("https://foo.com")' const res = await context.clients.platformHttp.get( "/artifactory/api/v1/system/readiness" ); // You should reach this part if the HTTP request status is successful (HTTP Status 399 or lower) if (res.status === 200) { console.log("Artifactory ping success"); } else { console.warn( `Request is successful but returned status other than 200. Status code : ${res.status}` ); } } catch (error) { // The platformHttp client throws PlatformHttpClientError if the HTTP request status is 400 or higher console.error( `Request failed with status code ${ error.status || "<none>" } caused by : ${error.message}` ); } return { message: `Acknowledged tokens that are about to expire: ${data.tokens.length}`, }; };
Input Parameters
context
Provides baseUrl, token, and clients to communicate with the JFrog Platform (for more information, see PlatformContext).
data
The request with details sent by Access.
export interface BeforeTokenExpiryRequest { /** The tokens that will expire */ tokens: | Array<Token> | undefined; } export interface Token { /** The token id to revoke */ id: string /** The subject the token belongs to */ subject: string; /** The owner of the token */ owner: string; /** The scope of the token*/ scope: string; /** The audience (i.e. services) this token is aimed for. These services are expected to accept this token */ audience: string; /** The time (epoch) this token expires (optional if it has no expiration time) */ expirationTime: number; /** The time (epoch) this token was created */ created: number; /** Token type. Could be session or generic */ type: string; /** Optional username derived from the token subject */ username: string; /** Optional free text describing the token */ description: string; /** The project key associated with the token */ projectKey: string; }
Response
export interface BeforeTokenExpiryResponse { /** Message to print to the log, in case of an error it will be printed as a warning */ message: string; } { "status": CreateTokenStatus.CREATE_TOKEN_PROCEED, "message": "Overwritten by worker-service if an error occurs.", }