adleria
Version:
Adleria (https://adlerial.com) API for nodejs
64 lines (58 loc) • 1.72 kB
JavaScript
/**
* Adleria bindings for nodejs
*
* (c) 2015 Optimal Bits Sweden AB.
*
*/
/// <reference path="../typings/node/node.d.ts"/>
;
var Promise = require("bluebird");
var request = require("request-promise");
var _ = require("lodash");
var urlJoin = require("url-join");
var requestAsync = Promise.promisify(request);
module.exports = function (auth, baseUrl, opts) {
var playersUrl = urlJoin(baseUrl, "players");
return {
campaigns: function (auth, playerId) {
const url = urlJoin(playersUrl, playerId, "campaigns");
return requestAsync({
method: "GET",
url: url,
auth: auth,
json: true,
});
},
impressions: function (auth, playerId) {
var url = urlJoin(playersUrl, playerId, "impressions");
return {
add: function (campaigns) {
if (_.isEmpty(campaigns)) {
return Promise.resolve([{ statusCode: 400 }]);
}
return Promise.all(
Object.keys(campaigns).map(function (campaignId) {
var impressions = campaigns[campaignId];
impressions.campaignId = campaignId;
console.log("MAPPING:", impressions);
return requestAsync({
method: "PUT",
url: url,
auth: auth,
json: true,
body: impressions,
});
})
).then(function (results) {
var invalid = _.find(results, function (result) {
if (result[0].statusCode !== 200) {
return result;
}
});
return invalid ? invalid : results[0];
});
},
};
},
};
};