import { Client } from 'dynamic-yield-client'; import Products from './Contracts/Products'; class AssetsManager { /** * * * @type {Client} */ private client: Client; /** * * * @type {string: string} */ private messages: { [key: string]: string } = { success: 'TrendingService - Asset Definitions update success!', failure: 'TrendingService - Asset Definitions update failure!', } /** * * * @param {Client} client * @return {AssetsManager} */ public constructor(client: Client) { this.client = client; } /** * * * @param {Products} products * @return {Promise} */ public async update(products: Products) { try { const response = await this.client.forward().assetDefinitions(this.createDefinitions(products)); const { success, failure } = this.messages; response.status === 200 ? console.info(success) : console.error(failure); } catch (error) { console.error(this.messages.failure, error); } } /** * * * @param {object} products * @return {object} */ private createDefinitions(products: Products) { return Object.entries(products).reduce((assets, [code, product]) => ({ ...assets, [code]: product.assets }), {}); } } export default AssetsManager;