84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
import json
|
|
from urllib.parse import quote
|
|
|
|
from .error import HappyError
|
|
from .zone import UncompleteZoneMeta, ZoneMeta, Zone
|
|
|
|
class Domain:
|
|
|
|
def __init__(self, _session, id, id_owner, id_provider, domain, zone_history, zone_history_are_ids=False, group=""):
|
|
self._session = _session
|
|
|
|
self.id = id
|
|
self.id_owner = id_owner
|
|
self.id_provider = id_provider
|
|
self.domain = domain
|
|
self.group = group
|
|
if zone_history_are_ids:
|
|
self.zone_history = [UncompleteZoneMeta(self, zid) for zid in zone_history] if zone_history is not None else []
|
|
else:
|
|
self.zone_history = zone_history if zone_history is not None else []
|
|
|
|
def _dumps(self):
|
|
return json.dumps({
|
|
"id": self.id,
|
|
"id_owner": self.id_owner,
|
|
"id_provider": self.id_provider,
|
|
"domain": self.domain,
|
|
"group": self.group,
|
|
"zone_history": self.zone_history,
|
|
})
|
|
|
|
@property
|
|
def current_zone(self):
|
|
if len(self.zone_history) == 0:
|
|
self.import_zone()
|
|
|
|
return self.zone_history[0]
|
|
|
|
def delete(self):
|
|
r = self._session.session.delete(
|
|
self.baseurl + "/api/domains/" + quote(self.id),
|
|
)
|
|
|
|
if r.status_code > 300:
|
|
raise HappyError(r.status_code, **r.json())
|
|
|
|
return r.json()
|
|
|
|
def update(self):
|
|
r = self._session.session.put(
|
|
self._session.baseurl + "/api/domains/" + quote(self.id),
|
|
date=self._dumps(),
|
|
)
|
|
|
|
if r.status_code > 300:
|
|
raise HappyError(r.status_code, **r.json())
|
|
|
|
return r.json()
|
|
|
|
def import_zone(self):
|
|
r = self._session.session.post(
|
|
self._session.baseurl + "/api/domains/" + quote(self.id) + "/import_zone",
|
|
)
|
|
|
|
if r.status_code > 300:
|
|
raise HappyError(r.status_code, **r.json())
|
|
|
|
zm = ZoneMeta(self._session, **r.json())
|
|
self.zone_history.append(zm)
|
|
return zm
|
|
|
|
def get_zone(self, zid):
|
|
r = self._session.session.get(
|
|
self._session.baseurl + "/api/domains/" + quote(self.id) + "/zone/" + quote(zid),
|
|
)
|
|
|
|
if r.status_code > 300:
|
|
raise HappyError(r.status_code, **r.json())
|
|
|
|
return Zone(self._session, self.id, **r.json())
|
|
|
|
def get_current_zone(self):
|
|
return self.get_zone(self.current_zone)
|