UNPKG

channelape-sdk

Version:
96 lines 3.62 kB
"use strict"; 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