Fully tested

This commit is contained in:
nemunaire 2023-04-13 06:56:07 +02:00
parent 3b905bd28e
commit e9ecfccdb3
5 changed files with 44 additions and 28 deletions

View File

@ -65,7 +65,7 @@ class Admin:
return ret
def authuser_udpate(self, Id, au):
def authuser_update(self, Id, au):
r = self.session.put(
"http+unix://" + self.socket_path + "/api/auth/" + quote_plus(Id),
data=json.dumps({

View File

@ -1,3 +1,6 @@
import json
from urllib.parse import quote
class AuthUser:
def __init__(self, _session, Id, Email, EmailVerification, Password, CreatedAt, LastLoggedIn, AllowCommercials):
@ -14,9 +17,9 @@ class AuthUser:
def Delete(self):
self._session.authuser_delete(self.Id)
def ResetPassword(self, Id, NewPassword):
r = self.session.post(
"http+unix://" + self.socket_path + "/api/auth/" + quote_plus(Id) + "/reset_password",
def ResetPassword(self, NewPassword):
r = self._session.session.post(
"http+unix://" + self._session.socket_path + "/api/auth/" + quote(self.Id) + "/reset_password",
data=json.dumps({
"password": NewPassword,
})

View File

@ -1,4 +1,5 @@
import json
from urllib.parse import quote
from .error import HappyError
from .domain import Domain
@ -15,14 +16,13 @@ class Provider:
self.args = kwargs
def _dumps(self):
d = {
return json.dumps({
"_srctype": self._srctype,
"_id": self._id,
"_ownerid": self._ownerid,
"_comment": self._comment,
}
d.update(self.kwargs)
return json.dumps(d)
"Provider": self.args,
})
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, **r.json())
return Domain(self._session, **r.json())
def delete(self):
r = self._session.session.delete(
self.baseurl + "/api/providers/" + quote(self._id),
self._session.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.baseurl + "/api/providers/" + quote(self._id),
date=self._dumps(),
self._session.baseurl + "/api/providers/" + quote(self._id),
data=self._dumps(),
)
if r.status_code > 300:

View File

@ -6,6 +6,8 @@ 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
@ -42,22 +44,25 @@ class HService(ServiceMeta):
return json.dumps(self._flat())
def _flat(self):
return {
d = {
"_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.baseurl + "/api/domains/" + quote(self._domainid) + "/zone/" + quote(self._zoneid) + "/" + quote(self._domain) + "/services/" + quote(self._id),
self._session.baseurl + "/api/domains/" + quote(self._domainid) + "/zone/" + quote(self._zoneid) + "/" + quote(self._domain) + "/services/" + quote(self._id),
)
if r.status_code > 300:

View File

@ -33,23 +33,20 @@ class ZoneMeta:
class Zone(ZoneMeta):
def __init__(self, _session, _domainid, services, **kwargs):
def __init__(self, _session, _domainid, **kwargs):
self._domainid = _domainid
super(Zone, self).__init__(_session, **kwargs)
self._domainid = _domainid
self._load(services)
def _load(self, services, **kwargs):
if "id" in kwargs:
super(Zone, self).__init__(**kwargs)
super(Zone, self)._load(**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(_session, self._domainid, self.id, **s))
self.services[k].append(HService(self._session, self._domainid, self.id, **s))
def _svc_dumps(self):
services = {}
@ -62,9 +59,7 @@ class Zone(ZoneMeta):
return services
def _dumps(self):
return json.dumps({
"id": self.id,
"id_author": self.id_author,
d = json.dumps({
"default_ttl": self.default_ttl,
"last_modified": self.last_modified,
"commit_message": self.commit_message,
@ -72,6 +67,11 @@ 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,11 +97,19 @@ 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 r.json()
return ZoneMeta(self._session, **r.json())