dynect-api
Version:
A barely functional, yet servicable, Dynect Managed DNS REST API Interface
95 lines (79 loc) • 2.56 kB
JavaScript
;
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);
});
});
}