UNPKG

javanile-cronicle-client

Version:

Light Cronicle node client with full TypeScript support

104 lines 3.86 kB
'use strict'; 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