@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
JavaScript
;
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