101 lines
2.6 KiB
Python
101 lines
2.6 KiB
Python
import requests
|
|
|
|
"""
|
|
Author: Vyacheslav Anzhiganov
|
|
Email: vanzhiganov@ya.ru
|
|
Date: 2014-12-01
|
|
Version: 0.2
|
|
"""
|
|
|
|
|
|
class CloudnsClient:
|
|
def __init__(self, email, secret):
|
|
self.cloudns_api_url = 'http://api.cloudns.ru/api.php'
|
|
self.email = email
|
|
self.secret = secret
|
|
|
|
# todo: v2.0
|
|
def query(self, method, **kwargs):
|
|
data = {
|
|
"email": self.email,
|
|
"secret": self.secret
|
|
}
|
|
for arg in kwargs:
|
|
data[arg] = kwargs[arg]
|
|
return None
|
|
|
|
def request(self, data):
|
|
return requests.post(self.cloudns_api_url, data=data)
|
|
|
|
def domain_record_get_items(self, domain):
|
|
data = {
|
|
"email": self.email,
|
|
"secret": self.secret,
|
|
'method': "domain_record_get_items",
|
|
"domain": domain
|
|
}
|
|
return self.request(data)
|
|
|
|
def domain_record_delete(self, domain, record_id):
|
|
data = {
|
|
"email": self.email,
|
|
"secret": self.secret,
|
|
'method': "domain_record_delete",
|
|
"domain": domain,
|
|
"record_id": record_id
|
|
}
|
|
return self.request(data)
|
|
|
|
def domain_record_delete_by_host(self, domain, host, rtype):
|
|
data = {
|
|
"email": self.email,
|
|
"secret": self.secret,
|
|
'method': "domain_record_delete_by_host",
|
|
"domain": domain,
|
|
"host": host,
|
|
"type": rtype
|
|
}
|
|
return self.request(data)
|
|
|
|
def domain_record_add(self, domain, host, rtype, destination, priority=0):
|
|
data = {
|
|
"email": self.email,
|
|
"secret": self.secret,
|
|
'method': "domain_record_add",
|
|
"domain": domain,
|
|
"host": host,
|
|
"type": rtype,
|
|
"destination": destination,
|
|
"priority": priority,
|
|
}
|
|
return self.request(data)
|
|
|
|
|
|
# TODO: v2.0
|
|
class Zone(CloudnsClient):
|
|
def create(self, name):
|
|
return self.query('zone.create', name=name)
|
|
|
|
def ls(self):
|
|
return self.query('zone.ls')
|
|
|
|
def delete(self, name):
|
|
return self.query('zone.delete', name=name)
|
|
|
|
|
|
# TODO: v2.0
|
|
class Record(CloudnsClient):
|
|
def ls(self, name, type=None):
|
|
return self.query('record.ls', name=name, type=None)
|
|
|
|
def create(self, name, host, record_type, destination, priority=0):
|
|
return self.query(
|
|
'record.create',
|
|
name=name, host=host, record_type=record_type, destination=destination, priority=priority
|
|
)
|
|
|
|
def delete(self, name, host, record_type):
|
|
return None
|
|
|
|
def delete_by_id(self, name, record_id):
|
|
return None
|