channelape-sdk
Version:
A client for interacting with ChannelApe's API
96 lines • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Q = require("q");
const Resource_1 = require("../../model/Resource");
const Version_1 = require("../../model/Version");
const GenerateApiError_1 = require("../../utils/GenerateApiError");
const EXPECTED_GET_STATUS = 200;
const EXPECTED_POST_STATUS = 201;
class AnalyticsService {
constructor(client) {
this.client = client;
}
generateEmbed(embedCode, timezone) {
return this.getEmbed(embedCode, timezone);
}
get() {
return this.getReports();
}
getToken() {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V2}${Resource_1.default.ANALYTICS}/tokens`;
this.client.post(requestUrl, {}, (error, response, body) => {
this.mapTokenPromise(requestUrl, deferred, error, response, body, EXPECTED_POST_STATUS);
});
return deferred.promise;
}
getReports() {
const deferred = Q.defer();
const requestUrl = `/${Version_1.default.V1}${Resource_1.default.ANALYTICS}`;
this.client.get(requestUrl, {}, (error, response, body) => {
this.mapReportsPromise(requestUrl, deferred, error, response, body, EXPECTED_GET_STATUS);
});
return deferred.promise;
}
getEmbed(embedCode, timezone) {
const deferred = Q.defer();
const embedGenerationRequest = {
embedCode,
timezone
};
const options = {
data: embedGenerationRequest
};
const requestUrl = `/${Version_1.default.V2}${Resource_1.default.ANALYTICS}`;
this.client.post(requestUrl, options, (error, response, body) => {
this.mapEmbedPromise(requestUrl, deferred, error, response, body, EXPECTED_POST_STATUS);
});
return deferred.promise;
}
mapEmbedPromise(requestUrl, deferred, error, response, body, expectedStatusCode) {
if (error) {
deferred.reject(error);
}
else if (response.status === expectedStatusCode) {
const embed = this.formatEmbed(body);
deferred.resolve(embed);
}
else {
const channelApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, response, body, EXPECTED_POST_STATUS);
deferred.reject(channelApeErrorResponse);
}
}
mapReportsPromise(requestUrl, deferred, error, response, body, expectedStatusCode) {
if (error) {
deferred.reject(error);
}
else if (body.errors.length > 0) {
deferred.reject(body.errors);
}
else if (response.status === expectedStatusCode) {
deferred.resolve(body.reports);
}
else {
const channelApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, response, body, EXPECTED_POST_STATUS);
deferred.reject(channelApeErrorResponse);
}
}
mapTokenPromise(requestUrl, deferred, error, response, body, expectedStatusCode) {
if (error) {
deferred.reject(error);
}
else if (response.status === expectedStatusCode) {
deferred.resolve(body);
}
else {
const channelApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, response, body, EXPECTED_POST_STATUS);
deferred.reject(channelApeErrorResponse);
}
}
formatEmbed(embed) {
embed.expiration = new Date(embed.expiration);
return embed;
}
}
exports.default = AnalyticsService;
//# sourceMappingURL=AnalyticsService.js.map