UNPKG

dynect-api

Version:

A barely functional, yet servicable, Dynect Managed DNS REST API Interface

95 lines (79 loc) 2.56 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; exports.getCurrentToken = getCurrentToken; exports.login = login; exports.getZones = getZones; exports.getZone = getZone; exports.request = request; var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var token = null; var maxRedirects = 999999; var apiUrl = 'https://api.dynect.net/REST'; var loginData = {}; function init(credentials) { loginData = credentials; } function getCurrentToken() { return token; } async function login() { return new Promise(function (resolve, reject) { return request('/Session', 'POST', loginData).then(function (response) { if (response.data && response.data.data && response.data.data.token) { token = response.data.data.token; return resolve(true); } return reject(new Error('Token was not recieved on request.')); }).catch(function (err) { return reject(err); }); }); } async function getZones() { return new Promise(function (resolve, reject) { return request('/Zone', 'GET', null).then(function (response) { if (response.data && response.data.data) { return resolve(response.data.data); } return reject(new Error('Could not get zones.')); }).catch(function (err) { return reject(err); }); }); } async function getZone(zonePath) { return new Promise(function (resolve, reject) { return request(zonePath, 'GET', null).then(function (response) { if (response.data && response.data.data) { return resolve(response.data.data); } return reject(new Error('Could not get zones.')); }).catch(function (err) { return reject(err); }); }); } async function request(path, method, data) { return new Promise(function (resolve, reject) { var url = '' + apiUrl + path.replace("/REST", ""); var headers = { 'Content-Type': 'application/json' }; if (token) { _lodash2.default.set(headers, 'Auth-Token', token); } var request = { url: url, method: method, data: data, headers: headers, maxRedirects: maxRedirects }; return (0, _axios2.default)(_lodash2.default.omit(request, _lodash2.default.isNil)).then(function (response) { return resolve(response); }).catch(function (err) { return reject(err); }); }); }