-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
112 lines (100 loc) · 4.35 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
var debug = require('debug')('dynadot')
var axios = require('axios')
var fs = require('fs')
var baseUrl = 'https://api.dynadot.com/api3.xml'
var parser = require('@7c/xml2json');
class dynadot {
constructor(apikey) {
this.apikey = apikey
this.baseUrl=baseUrl+'?key='+apikey
}
doRequest(method,endpoint,data={},AdditionalAxiosOptions={}){
var that = this
return new Promise(async function (resolve,reject) {
var { headers } = AdditionalAxiosOptions
axios({
method,
url: that.baseUrl+endpoint,
data,
headers
}).then(res=>{
resolve(res.data)
}).catch(err=>{
reject(err)
})
})
}
//https://api.dynadot.com/api3.xml?key=mykey&command=set_ns&domain=domain1.com,domain2.com&ns0=ns1.hostns.com&ns1=ns2.hostns.com
setNameserver(domain,nameservers) {
var that = this
return new Promise(async function (resolve,reject) {
var endPoint = `&command=set_ns&domain=${domain}&`+nameservers.map(function(n, idx) { return "ns"+(idx)+"="+n }).join('&')
var got = await that.doRequest('get',endPoint)
var json = parser.toJson(got,{object:true})
resolve(json)
})
}
listDomains() {
var that = this
return new Promise(async function (resolve,reject) {
const endPoint = `&command=list_domain`
const got = await that.doRequest('get',endPoint)
const json = parser.toJson(got,{object:true})
let ret = {}
// aggregate
for(const domain of json.ListDomainInfoResponse.ListDomainInfoContent.DomainInfoList.DomainInfo.Domain)
{
ret[domain.Name]={...domain}
}
resolve(ret)
})
}
// https://api.dynadot.com/api3.xml?key=mykey&command=register&domain=domain1.net&duration=3¤cy=USD
registerDomain(domainName,durationYears, currency='USD',allowPremium=false, coupon=false) {
return new Promise(async (resolve,reject) => {
if (durationYears<1) return ('durationYears must be at least 1')
let endPoint = `&command=register&domain=${domainName}&duration=${durationYears}¤cy=${currency}`
if (allowPremium===true) endPoint+='&allow_premium=1'
if (coupon!==false) endPoint+=`&coupon=${coupon}`
const got = await this.doRequest('get',endPoint)
const json = parser.toJson(got,{object:true})
resolve(json.RegisterResponse)
})
}
//https://api.dynadot.com/api3.xml?key=0&command=tld_price¤cy=USD
tldPrices(currency='USD') {
return new Promise(async (resolve,reject) => {
const endPoint = `&command=tld_price¤cy=${currency}`
const got = await this.doRequest('get',endPoint)
const json = parser.toJson(got,{object:true})
if (json.TldPriceResponse.TldPriceResponseHeader.SuccessCode!=="0") return reject(json)
let ret = {}
for(const tld of json.TldPriceResponse.TldPriceContent)
{
ret[tld.TldContent.Tld]=tld.TldContent
}
resolve(ret)
})
}
//https://api.dynadot.com/api3.xml?key=mykey&command=delete&domain=domain1.com
deleteDomain(domainName) {
return new Promise(async (resolve,reject) => {
const endPoint = `&command=delete&domain=${domainName}`
const got = await this.doRequest('get',endPoint)
const json = parser.toJson(got,{object:true})
resolve(json.DeleteResponse)
})
}
//https://api.dynadot.com/api3.xml?key=mykey&command=get_transfer_auth_code&domain=domian1.com&new_code=1&unlock_domain_for_transfer=1
getTransferAuthCode(domainName,new_code=false,unlock_domain_for_transfer=true) {
return new Promise(async (resolve,reject) => {
let endPoint = `&command=get_transfer_auth_code&domain=${domainName}`
if (new_code===true) endPoint+='&new_code=1'
if (unlock_domain_for_transfer===true) endPoint+='&unlock_domain_for_transfer=1'
const got = await this.doRequest('get',endPoint)
const json = parser.toJson(got,{object:true})
resolve(json)
})
}
}
module.exports = dynadot