diff --git a/happydomain/admin.py b/happydomain/admin.py index 513fd97..075cadb 100644 --- a/happydomain/admin.py +++ b/happydomain/admin.py @@ -65,7 +65,7 @@ class Admin: return ret - def authuser_update(self, Id, au): + def authuser_udpate(self, Id, au): r = self.session.put( "http+unix://" + self.socket_path + "/api/auth/" + quote_plus(Id), data=json.dumps({ diff --git a/happydomain/authuser.py b/happydomain/authuser.py index be4c86d..c9d72e9 100644 --- a/happydomain/authuser.py +++ b/happydomain/authuser.py @@ -1,6 +1,3 @@ -import json -from urllib.parse import quote - class AuthUser: def __init__(self, _session, Id, Email, EmailVerification, Password, CreatedAt, LastLoggedIn, AllowCommercials): @@ -17,9 +14,9 @@ class AuthUser: def Delete(self): self._session.authuser_delete(self.Id) - def ResetPassword(self, NewPassword): - r = self._session.session.post( - "http+unix://" + self._session.socket_path + "/api/auth/" + quote(self.Id) + "/reset_password", + def ResetPassword(self, Id, NewPassword): + r = self.session.post( + "http+unix://" + self.socket_path + "/api/auth/" + quote_plus(Id) + "/reset_password", data=json.dumps({ "password": NewPassword, }) diff --git a/happydomain/provider.py b/happydomain/provider.py index 12174e2..3f78381 100644 --- a/happydomain/provider.py +++ b/happydomain/provider.py @@ -1,5 +1,4 @@ import json -from urllib.parse import quote from .error import HappyError from .domain import Domain @@ -16,13 +15,14 @@ class Provider: self.args = kwargs def _dumps(self): - return json.dumps({ + d = { "_srctype": self._srctype, "_id": self._id, "_ownerid": self._ownerid, "_comment": self._comment, - "Provider": self.args, - }) + } + d.update(self.kwargs) + return json.dumps(d) def domain_add(self, dn): r = self._session.session.post( @@ -36,11 +36,11 @@ class Provider: if r.status_code != 200: raise HappyError(r.status_code, **r.json()) - return Domain(self._session, **r.json()) + return Domain(self, **r.json()) def delete(self): r = self._session.session.delete( - self._session.baseurl + "/api/providers/" + quote(self._id), + self.baseurl + "/api/providers/" + quote(self._id), ) if r.status_code > 300: @@ -50,8 +50,8 @@ class Provider: def update(self): r = self._session.session.put( - self._session.baseurl + "/api/providers/" + quote(self._id), - data=self._dumps(), + self.baseurl + "/api/providers/" + quote(self._id), + date=self._dumps(), ) if r.status_code > 300: diff --git a/happydomain/service.py b/happydomain/service.py index fd8e544..8fa655c 100644 --- a/happydomain/service.py +++ b/happydomain/service.py @@ -6,8 +6,6 @@ from .error import HappyError class ServiceMeta: def __init__(self, _session, _svctype, _domain, _ttl, _id=None, _ownerid=None, _comment="", _mycomment="", _aliases=[], _tmp_hint_nb=0): - self._session = _session - self._svctype = _svctype self._domain = _domain self._ttl = _ttl @@ -44,25 +42,22 @@ class HService(ServiceMeta): return json.dumps(self._flat()) def _flat(self): - d = { + return { "_svctype": self._svctype, "_domain": self._domain, "_ttl": self._ttl, + "_id": self._id, + "_ownerid": self._ownerid, "_comment": self._comment, "_mycomment": self._mycomment, "_aliases": self._aliases, "_tmp_hint_nb": self._tmp_hint_nb, "Service": self.service, } - if self._id is not None: - d["_id"] = self._id - if self._ownerid is not None: - d["_ownerid"] = self._ownerid - return d def delete(self): r = self._session.session.delete( - self._session.baseurl + "/api/domains/" + quote(self._domainid) + "/zone/" + quote(self._zoneid) + "/" + quote(self._domain) + "/services/" + quote(self._id), + self.baseurl + "/api/domains/" + quote(self._domainid) + "/zone/" + quote(self._zoneid) + "/" + quote(self._domain) + "/services/" + quote(self._id), ) if r.status_code > 300: diff --git a/happydomain/zone.py b/happydomain/zone.py index bd8757c..68786a4 100644 --- a/happydomain/zone.py +++ b/happydomain/zone.py @@ -33,20 +33,23 @@ class ZoneMeta: class Zone(ZoneMeta): - def __init__(self, _session, _domainid, **kwargs): - self._domainid = _domainid - + def __init__(self, _session, _domainid, services, **kwargs): super(Zone, self).__init__(_session, **kwargs) + self._domainid = _domainid + self._load(services) + + def _load(self, services, **kwargs): - super(Zone, self)._load(**kwargs) + if "id" in kwargs: + super(Zone, self).__init__(**kwargs) self.services = {} if services is not None: for k in services: self.services[k] = [] for s in services[k]: - self.services[k].append(HService(self._session, self._domainid, self.id, **s)) + self.services[k].append(HService(_session, self._domainid, self.id, **s)) def _svc_dumps(self): services = {} @@ -59,7 +62,9 @@ class Zone(ZoneMeta): return services def _dumps(self): - d = json.dumps({ + return json.dumps({ + "id": self.id, + "id_author": self.id_author, "default_ttl": self.default_ttl, "last_modified": self.last_modified, "commit_message": self.commit_message, @@ -67,11 +72,6 @@ class Zone(ZoneMeta): "published": self.published, "services": self._svc_dumps(), }) - if self.id is not None: - d["id"] = self.id - if self.id_author is not None: - d["id_author"] = self.id_author - return d def add_zone_service(self, subdomain, svctype, svc): r = self._session.session.post( @@ -97,19 +97,11 @@ class Zone(ZoneMeta): return r.json() def apply_changes(self): - rdiff = self._session.session.post( - self._session.baseurl + "/api/domains/" + quote(self._domainid) + "/diff_zones/%40/" + quote(self.id), - ) - - if rdiff.status_code > 300: - raise HappyError(rdiff.status_code, **rdiff.json()) - r = self._session.session.post( self._session.baseurl + "/api/domains/" + quote(self._domainid) + "/zone/" + quote(self.id) + "/apply_changes", - data=rdiff.text ) if r.status_code > 300: raise HappyError(r.status_code, **r.json()) - return ZoneMeta(self._session, **r.json()) + return r.json() diff --git a/pyproject.toml b/pyproject.toml index 5ea4d83..eaf9551 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "happydomain" -version = "0.0.5" +version = "0.0.4" authors = [ { name="happyDomain's team", email="contact+pypi@happydomain.org" }, ] diff --git a/setup.py b/setup.py index 6bc6916..eb9e78e 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ try: except ImportError: from distutils.core import setup -version = "0.0.5" +version = "0.0.4" setup( name = "happydomain",