UNPKG

@mediarithmics/plugins-nodejs-sdk

Version:

This is the mediarithmics nodejs to help plugin developers bootstrapping their plugin without having to deal with most of the plugin boilerplate

69 lines 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AdRendererRecoTemplatePlugin = void 0; const utils_1 = require("../../../utils"); const AdRendererTemplatePlugin_1 = require("../template/AdRendererTemplatePlugin"); class AdRendererRecoTemplatePlugin extends AdRendererTemplatePlugin_1.AdRendererTemplatePlugin { constructor(enableThrottling = false) { super(enableThrottling); } /** * Helper to fetch the User Campaign * @param campaignId The campaignId -> should come from the AdRendererRequest * @param userCampaignId The userCampaignId -> should come from the AdRendererRequest * @returns A Promise of the User Campaign */ async fetchUserCampaign(campaignId, userCampaignId) { let userCampaignResponse; try { userCampaignResponse = await super.requestGatewayHelper('GET', `${this.outboundPlatformUrl}/v1/display_campaigns/${campaignId}/user_campaigns/${userCampaignId}`); } catch (e) { this.logger.error(`User campaign could not be fetched for: ${campaignId} - ${userCampaignId} Returning empty user campaign Error: ${e.stack ? e.stack : 'stack undefined'}`); userCampaignResponse = { status: 'ok', data: { user_account_id: 'null', user_agent_ids: ['null'], databag: '', user_identifiers: [], }, }; } return userCampaignResponse.data; } /** * Helper to fetch the User recommendations * @param instanceContext The instanceContext -> contains the recommender_id of the creative * @param userAgentId The userAgentId as a string -> should come from the AdRendererRequest (recommended) or from the UserCampaign * @returns A Promise of the Recommendations */ async fetchRecommendations(instanceContext, userAgentId) { // Without any recommender, we return an empty array if (!instanceContext.recommender_id) { return Promise.resolve([]); } const uri = `${this.outboundPlatformUrl}/v1/recommenders/${instanceContext.recommender_id}/recommendations`; const body = { recommender_id: instanceContext.recommender_id, input_data: { user_agent_id: userAgentId, }, }; this.logger.debug(`POST: ${uri} - ${JSON.stringify(body)}`); const response = await super.requestGatewayHelper('POST', uri, body); this.logger.debug(`Recommender ${instanceContext.recommender_id} response : ${JSON.stringify(response)}`); return response.data.proposals; } async instanceContextBuilder(creativeId) { const baseInstanceContext = await super.instanceContextBuilder(creativeId); const recommenderProperty = baseInstanceContext.properties.findStringProperty('recommender_id'); const context = { ...baseInstanceContext, recommender_id: (0, utils_1.map)(recommenderProperty, (p) => p.value.value), }; return context; } } exports.AdRendererRecoTemplatePlugin = AdRendererRecoTemplatePlugin; //# sourceMappingURL=AdRendererRecoTemplatePlugin.js.map