github.com/jfrog/jfrog-cli-platform-services@v1.2.0/commands/templates/GENERIC_EVENT.ts_template (about) 1 import { PlatformContext } from 'jfrog-workers'; 2 3 type CustomPayload = void; 4 type CustomResponse = { 5 error: string | undefined, // Valued with the cause in case of error 6 repositories: Record<string, number>, // A list that contains the number of repositories per repository type 7 }; 8 type RepoData = { 9 "key": string, 10 "type": string, 11 "description": string, 12 "url": string, 13 "packageType": string 14 }; 15 16 // This worker returns the number of repositories for each repository type. 17 export default async (context: PlatformContext, data: CustomPayload): Promise<CustomResponse> => { 18 19 const response = { 20 error: undefined, 21 repositories: {}, 22 }; 23 24 try { 25 // Ref: https://jfrog.com/help/r/jfrog-rest-apis/get-repositories 26 const res = await context.clients.platformHttp.get('/artifactory/api/repositories'); 27 if (res.status === 200) { 28 const repositories: RepoData[] = res.data; 29 30 // The number of repositories mapped by repository type 31 const repoCountRecord: Record<string, number> = {}; 32 33 repositories.forEach(repository => { 34 let count = repoCountRecord[repository.type] || 0; 35 repoCountRecord[repository.type] = ++count; 36 }); 37 38 response.repositories = repoCountRecord; 39 console.log("Repository count success"); 40 } else { 41 response.error = `Request is successful but returned an unexpected status : ${ res.status }`; 42 console.warn(response.error); 43 } 44 } catch(error) { 45 response.error = `Request failed with status code ${ error.status || '<none>' } caused by : ${ error.message }`; 46 console.error(response.error); 47 } 48 49 return response; 50 }