javanile-cronicle-client
Version:
Light Cronicle node client with full TypeScript support
104 lines • 3.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const qs = require("querystring");
const request = require("request-promise");
const CronicleError_1 = require("./CronicleError");
var BaseTargets;
(function (BaseTargets) {
BaseTargets["ALL"] = "allgrp";
BaseTargets["MAIN"] = "maingrp";
})(BaseTargets = exports.BaseTargets || (exports.BaseTargets = {}));
var BaseCategories;
(function (BaseCategories) {
BaseCategories["GENERAL"] = "general";
})(BaseCategories = exports.BaseCategories || (exports.BaseCategories = {}));
class CronicleClient {
constructor(opts) {
if (!opts.masterUrl) {
throw new Error('cronicle master url is required');
}
if (!opts.apiKey) {
throw new Error('cronicle api key is required');
}
this._baseUrl = `${opts.masterUrl.replace(/\/$/, '')}/api/app`;
this._headers = {
'X-API-Key': opts.apiKey,
};
}
createEvent(req, enforceUnique) {
return Promise.resolve()
.then(() => {
if (!enforceUnique) {
return Promise.resolve();
}
return this.getEvent(req.id ? { id: req.id } : { title: req.title })
.catch(() => {
return Promise.resolve();
})
.then((resp) => {
if (resp) {
return Promise.reject(new CronicleError_1.CronicleError({
code: 'unique',
description: 'event already exists',
}));
}
return Promise.resolve();
});
})
.then(() => {
return this._executeRequest('create_event', "POST" /* POST */, req);
});
}
getEvent(req) {
return this._executeRequest('get_event', "POST" /* POST */, req);
}
getJobStatus(req) {
return this._executeRequest('get_job_status', "GET" /* GET */, req);
}
getJobLog(req) {
return this._executeRequest('get_job_log', "GET" /* GET */, req);
}
runEvent(req) {
return this._executeRequest('run_event', "POST" /* POST */, req);
}
updateEvent(req) {
return this._executeRequest('update_event', "POST" /* POST */, req);
}
updateJob(req) {
return this._executeRequest('update_job', "POST" /* POST */, req);
}
deleteEvent(req) {
return this._executeRequest('delete_event', "POST" /* POST */, req);
}
abortJob(req) {
return this._executeRequest('abort_job', "POST" /* POST */, req);
}
getSchedule(req) {
return this._executeRequest('get_schedule', "GET" /* GET */, req);
}
_executeRequest(operation, httpMethod, bodyOrQuery) {
return Promise.resolve(request(this._buildRequest(operation, httpMethod, bodyOrQuery)))
.then((response) => {
if (operation !== 'get_job_log' && response.code !== 0) {
return Promise.reject(new CronicleError_1.CronicleError(response));
}
return Promise.resolve(response);
});
}
_buildRequest(operation, httpMethod, bodyOrQuery) {
return {
url: this._getMethodUrl(operation, httpMethod === "GET" /* GET */ ? bodyOrQuery : undefined),
method: httpMethod,
body: httpMethod === "GET" /* GET */ ? undefined : bodyOrQuery,
json: operation !== 'get_job_log',
headers: this._headers,
gzip: operation === 'get_job_log',
};
}
_getMethodUrl(operation, query) {
const queryString = `${query ? '?' : ''}${query ? qs.stringify(query) : ''}`;
return `${this._baseUrl}/${operation}/v1${queryString}`;
}
}
exports.CronicleClient = CronicleClient;
//# sourceMappingURL=CronicleClient.js.map