Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 1x 1x 1x 2x 2x 2x 1x 2x 1x 134x 5x 5x 10x 10x 10x 10x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import DefaultHandler from './default'; import constants from '../../constants'; import { Asset, Assets } from '../../../types'; const mappings = Object.entries(constants.GUARDIAN_FACTOR_PROVIDERS).reduce( (accum: { name: string; provider: string }[], [name, providers]) => { providers.forEach((p) => { accum.push({ name, provider: p }); }); return accum; }, [] ); export const schema = { type: 'array', items: { type: 'object', properties: { name: { type: 'string', enum: constants.GUARDIAN_FACTORS }, provider: { type: 'string', enum: mappings.map((p) => p.provider) }, }, required: ['name', 'provider'], }, }; export default class GuardianFactorProvidersHandler extends DefaultHandler { existing: Asset[]; constructor(options: DefaultHandler) { super({ ...options, type: 'guardianFactorProviders', id: 'name', }); } async getType(): Promise<Asset[]> { Iif (this.existing) return this.existing; const data = await Promise.all( mappings.map(async (m) => { const provider = await this.client.guardian.getFactorProvider(m); return { ...m, ...provider }; }) ); // Filter out empty, should have more then 2 keys (name, provider) return data.filter((d) => Object.keys(d).length > 2); } async processChanges(assets: Assets): Promise<void> { // No API to delete or create guardianFactorProviders, we can only update. const { guardianFactorProviders } = assets; // Do nothing if not set Iif (!guardianFactorProviders || !guardianFactorProviders.length) return; // Process each factor await Promise.all( guardianFactorProviders.map(async (factorProvider) => { const data = { ...factorProvider }; const params = { name: factorProvider.name, provider: factorProvider.provider }; delete data.name; delete data.provider; await this.client.guardian.updateFactorProvider(params, data); this.didUpdate(params); this.updated += 1; }) ); } } |