add functionality

This commit is contained in:
2016-05-16 03:29:29 +02:00
parent b2182ec63d
commit f4c2bb6e5b
7 changed files with 166 additions and 16 deletions

View File

@ -15,6 +15,32 @@ export class CflareAccount {
this.authEmail = optionsArg.email;
this.authKey = optionsArg.key;
}
getZoneId(domainName:string){
let done = plugins.q.defer();
this.listZones(domainName)
.then((responseArg) => {
let filteredResponse = responseArg.result.filter((zoneArg)=>{
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;
}
getRecord(domainNameArg:string,typeArg:string){
let done = plugins.q.defer();
this.listRecords(domainNameArg)
.then((responseArg) => {
let filteredResponse = responseArg.result.filter((recordArg) => {
return (recordArg.type == typeArg && recordArg.name == domainNameArg);
})
})
return done.promise;
};
createRecord(){
let done = plugins.q.defer();
return done.promise;
@ -23,20 +49,34 @@ export class CflareAccount {
let done = plugins.q.defer();
return done.promise;
};
updateRecord(domainNameArg:string,typeArg:string,valueArg){
let done = plugins.q.defer();
return done.promise;
};
listRecords(domainName:string){
let done = plugins.q.defer();
this.getZoneId(domainName)
.then((domainIdArg)=>{
this.request("GET","/zones/" + domainIdArg + "/dns_records?per_page=100")
.then(function(responseArg){
done.resolve(responseArg);
});
});
return done.promise;
}
listDomains(){
listZones(domainName?:string){ // TODO: handle pagination
let done = plugins.q.defer();
this.request("GET","/zones")
let requestRoute = "/zones?per_page=50"
if(domainName) requestRoute = requestRoute + "&name=" + domainName;
let result = {};
this.request("GET",requestRoute)
.then(function(responseArg){
result = responseArg;
done.resolve(result);
});
return done.promise;
};
request(methodArg:string,routeArg:string){
request(methodArg:string,routeArg:string,jsonArg?){
let done = plugins.q.defer();
let options = {
method:methodArg,
@ -45,8 +85,9 @@ export class CflareAccount {
"Content-Type":"application/json",
"X-Auth-Email":this.authEmail,
"X-Auth-Key":this.authKey
}
}
},
json:jsonArg
};
plugins.request(options,function(err, res, body){
if (!err && res.statusCode == 200) {
var responseObj = JSON.parse(body);

View File

@ -3,6 +3,7 @@
"dependencies": {},
"ambientDependencies": {
"colors": "registry:dt/colors#0.6.0-1+20160425153322",
"mocha": "registry:dt/mocha#2.2.5+20160317120654",
"node": "registry:dt/node#4.0.0+20160423143914"
}
}