Name
sn_analytics_api.AppseeHttpClient
Description
Implementation for AppseeHttpClient interface
Script
var AppseeHttpClient = Class.create();
AppseeHttpClient.prototype = Object.extendsObject(AbstractAppseeHttpClient, {
initialize: function(config, params) {
this.logger = AnalyticsApiLogger.getLogger('AppseeHttpClient');
this.analyticsSettings = sn_app_analytics.SNAnalytics.retrieveSettings(config.app_table_name, config.app_record_id);
if (gs.nil(this.analyticsSettings)) {
var errMsg = 'Analytics settings not found for Application, ' + config.app_table_name + ", " + config.app_record_id;
this.logger.error(errMsg);
throw new Error(errMsg);
}
this.TARGET_URL = config.endpoint;
this.apiKey = this.analyticsSettings.getApiKey();
this.params = params;
this.config = config;
this.client = sn_app_analytics.SNAnalytics.getAPIHttpClient();
},
doGet: function() {
var response = this.client.get(this.TARGET_URL);
return this._processResponse(response);
},
doPost: function(payload) {
payload = this._addParamsToPayload(payload);
this._setJsonContentType();
var response = this.client.postPayload(this.TARGET_URL, JSON.stringify(payload));
return this._processResponse(response);
},
doPut: function(payload) {
payload = this._addParamsToPayload(payload);
this._setJsonContentType();
var response = this.client.put(this.TARGET_URL, JSON.stringify(payload));
return this._processResponse(response);
},
doDelete: function(payload) {
payload = this._addParamsToPayload(payload);
this._setJsonContentType();
var response = this.client.del(this.TARGET_URL, JSON.stringify(payload));
return this._processResponse(response);
},
doPatch: function(payload) {
payload = this._addParamsToPayload(payload);
this._setJsonContentType();
var response = this.client.patch(this.TARGET_URL, JSON.stringify(payload));
return this._processResponse(response);
},
addHeader: function(key, value) {
this.client.addHeader(key, value);
},
_addParamsToPayload: function(payload) {
if (!this.params)
return;
this.params[AnalyticsAPIMetadata.Params.API_KEY.name] = this.apiKey;
var keys = Object.keys(this.params);
payload = payload || {};
for (var i = 0; i < keys.length; i++) {
payload[keys[i]] = this.params[keys[i]];
}
return payload;
},
_setJsonContentType: function() {
this.addHeader("Content-Type", "application/json");
},
_processResponse: function(response) {
var statusCode = this.client.getStatusCode();
if (statusCode < 200 || statusCode >= 300) {
var errMsg = 'Error while processing the request for the endpoint - ' + this.config.endpoint + ', Error message: ' + this.client.getErrorMessage() + ', Error response: ' + response;
this.logger.error(errMsg);
var error = new Error(errMsg);
error.response = response;
throw error;
}
return response;
},
type: 'AppseeHttpClient'
});
Sys ID
2b1cd36c530020101dccddeeff7b12a6