cloudflare/dist/cflare.classes.cflareaccount.js

145 lines
11 KiB
JavaScript
Raw Permalink Normal View History

2016-05-15 17:51:48 +00:00
"use strict";
2016-05-24 21:36:06 +00:00
require("typings-global");
2016-07-31 21:54:13 +00:00
const plugins = require("./cflare.plugins");
class CflareAccount {
constructor() {
2016-05-15 17:51:48 +00:00
}
2016-07-31 21:54:13 +00:00
authCheck() {
2016-05-15 17:51:48 +00:00
return (this.authEmail && this.authKey); //check if auth is available
2016-07-31 21:54:13 +00:00
}
2016-05-15 17:51:48 +00:00
;
2016-07-31 21:54:13 +00:00
auth(optionsArg) {
2016-05-15 17:51:48 +00:00
this.authEmail = optionsArg.email;
this.authKey = optionsArg.key;
2016-07-31 21:54:13 +00:00
}
getZoneId(domainName) {
let done = plugins.q.defer();
2016-05-16 01:29:29 +00:00
this.listZones(domainName)
2016-07-31 21:54:13 +00:00
.then((responseArg) => {
let filteredResponse = responseArg.result.filter((zoneArg) => {
2016-05-16 01:29:29 +00:00
return zoneArg.name === domainName;
});
if (filteredResponse.length >= 1) {
done.resolve(filteredResponse[0].id);
}
else {
plugins.beautylog.error("the domain " + domainName.blue + " does not appear to be in this account!");
done.reject(undefined);
}
});
return done.promise;
2016-07-31 21:54:13 +00:00
}
getRecord(domainNameArg, typeArg) {
let done = plugins.q.defer();
let domain = new plugins.smartstring.Domain(domainNameArg);
2016-06-18 13:36:15 +00:00
this.listRecords(domain.zoneName)
2016-07-31 21:54:13 +00:00
.then((responseArg) => {
let filteredResponse = responseArg.result.filter((recordArg) => {
2016-05-16 01:44:02 +00:00
return (recordArg.type == typeArg && recordArg.name == domainNameArg);
});
2016-06-21 17:04:43 +00:00
done.resolve(filteredResponse[0]);
2016-05-16 01:44:02 +00:00
});
return done.promise;
2016-07-31 21:54:13 +00:00
}
2016-05-16 01:44:02 +00:00
;
2016-07-31 21:54:13 +00:00
createRecord(domainNameArg, typeArg, contentArg) {
let done = plugins.q.defer();
let domain = new plugins.smartstring.Domain(domainNameArg);
2016-06-18 13:36:15 +00:00
this.getZoneId(domain.zoneName)
2016-07-31 21:54:13 +00:00
.then((domainIdArg) => {
let dataObject = {
2016-05-25 04:26:48 +00:00
name: domain.fullName,
2016-05-24 21:36:06 +00:00
type: typeArg,
content: contentArg
};
2016-07-31 21:54:13 +00:00
this.request("POST", "/zones/" + domainIdArg + "/dns_records", dataObject)
2016-05-24 21:36:06 +00:00
.then(function (responseArg) {
done.resolve(responseArg);
});
});
2016-05-15 17:51:48 +00:00
return done.promise;
2016-07-31 21:54:13 +00:00
}
2016-05-15 17:51:48 +00:00
;
2016-07-31 21:54:13 +00:00
removeRecord(domainNameArg, typeArg) {
let done = plugins.q.defer();
let domain = new plugins.smartstring.Domain(domainNameArg);
2016-06-21 17:04:43 +00:00
this.getRecord(domain.fullName, typeArg)
2016-07-31 21:54:13 +00:00
.then((responseArg) => {
2016-06-21 17:04:43 +00:00
if (responseArg) {
2016-07-31 21:54:13 +00:00
let requestRoute = "/zones/" + responseArg.zone_id + "/dns_records/" + responseArg.id;
this.request("DELETE", requestRoute)
.then((responseArg) => {
2016-06-21 17:04:43 +00:00
done.resolve(responseArg);
});
}
else {
done.reject();
}
2016-05-25 04:26:48 +00:00
});
2016-05-15 17:51:48 +00:00
return done.promise;
2016-07-31 21:54:13 +00:00
}
2016-05-15 17:51:48 +00:00
;
2016-07-31 21:54:13 +00:00
updateRecord(domainNameArg, typeArg, valueArg) {
let done = plugins.q.defer();
let domain = new plugins.smartstring.Domain(domainNameArg);
2016-05-16 01:44:02 +00:00
return done.promise;
2016-07-31 21:54:13 +00:00
}
2016-05-16 01:29:29 +00:00
;
2016-07-31 21:54:13 +00:00
listRecords(domainNameArg) {
let done = plugins.q.defer();
let domain = new plugins.smartstring.Domain(domainNameArg);
2016-06-18 13:36:15 +00:00
this.getZoneId(domain.zoneName)
2016-07-31 21:54:13 +00:00
.then((domainIdArg) => {
this.request("GET", "/zones/" + domainIdArg + "/dns_records?per_page=100")
2016-05-16 01:29:29 +00:00
.then(function (responseArg) {
done.resolve(responseArg);
});
});
2016-05-15 17:51:48 +00:00
return done.promise;
2016-07-31 21:54:13 +00:00
}
listZones(domainName) {
let done = plugins.q.defer();
let requestRoute = "/zones?per_page=50";
2016-05-16 01:29:29 +00:00
if (domainName)
requestRoute = requestRoute + "&name=" + domainName;
2016-07-31 21:54:13 +00:00
let result = {};
2016-05-16 01:29:29 +00:00
this.request("GET", requestRoute)
2016-05-15 17:51:48 +00:00
.then(function (responseArg) {
2016-05-16 01:29:29 +00:00
result = responseArg;
done.resolve(result);
2016-05-15 17:51:48 +00:00
});
return done.promise;
2016-07-31 21:54:13 +00:00
}
2016-05-15 17:51:48 +00:00
;
2016-07-31 21:54:13 +00:00
request(methodArg, routeArg, dataArg = {}) {
let done = plugins.q.defer();
let jsonArg = JSON.stringify(dataArg);
let options = {
2016-05-15 17:51:48 +00:00
method: methodArg,
url: "https://api.cloudflare.com/client/v4" + routeArg,
headers: {
"Content-Type": "application/json",
"X-Auth-Email": this.authEmail,
"X-Auth-Key": this.authKey
2016-05-16 01:29:29 +00:00
},
2016-05-24 21:36:06 +00:00
body: jsonArg
2016-05-15 17:51:48 +00:00
};
2016-06-21 17:04:43 +00:00
//console.log(options);
2016-05-15 17:51:48 +00:00
plugins.request(options, function (err, res, body) {
if (!err && res.statusCode == 200) {
var responseObj = JSON.parse(body);
done.resolve(responseObj);
}
else {
console.log(err);
console.log(res);
done.reject(err);
}
;
});
return done.promise;
2016-07-31 21:54:13 +00:00
}
}
2016-05-15 17:51:48 +00:00
exports.CflareAccount = CflareAccount;
;
2016-07-31 21:54:13 +00:00
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZsYXJlLmNsYXNzZXMuY2ZsYXJlYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NmbGFyZS5jbGFzc2VzLmNmbGFyZWFjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFPLE9BQU8sV0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBRzdDO0lBTUk7SUFFQSxDQUFDO0lBTE8sU0FBUztRQUNiLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsNEJBQTRCO0lBQ3pFLENBQUM7O0lBSUQsSUFBSSxDQUFDLFVBQW9DO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUNELFNBQVMsQ0FBQyxVQUFpQjtRQUN2QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO2FBQ3JCLElBQUksQ0FBQyxDQUFDLFdBQVc7WUFDZCxJQUFJLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTztnQkFDckQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNKLE9BQU8sQ0FB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