diff --git a/cloudnsru/__init__.py b/cloudnsru/__init__.py new file mode 100644 index 0000000..26c5f4a --- /dev/null +++ b/cloudnsru/__init__.py @@ -0,0 +1,101 @@ +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