First SDK version
This commit is contained in:
parent
952e9d06b0
commit
7aaf0e2a96
9 changed files with 532 additions and 2 deletions
90
happydomain/api.py
Normal file
90
happydomain/api.py
Normal file
|
@ -0,0 +1,90 @@
|
|||
"""Handle administration tasks through happyDomain's admin API"""
|
||||
|
||||
from datetime import datetime
|
||||
import json
|
||||
import os
|
||||
from urllib.parse import quote_plus
|
||||
|
||||
import requests
|
||||
|
||||
from .error import HappyError
|
||||
from .domain import Domain
|
||||
from .provider import Provider
|
||||
|
||||
COOKIE_NAME = "happydomain_session"
|
||||
|
||||
class HappyDomain:
|
||||
|
||||
def __init__(self, scheme="http", host="127.0.0.1", port=8081, baseurl="", token=None):
|
||||
self.session = requests.Session()
|
||||
self.baseurl = scheme + "://" + host + ":" + str(port) + baseurl
|
||||
self.token = token
|
||||
|
||||
def login(self, username, password):
|
||||
r = self.session.post(
|
||||
self.baseurl + "/api/auth",
|
||||
data=json.dumps({
|
||||
"email": username,
|
||||
"password": password,
|
||||
})
|
||||
)
|
||||
|
||||
if r.status_code != 200:
|
||||
raise HappyError(r.status_code, **json.loads(r.text))
|
||||
|
||||
self.token = r.cookies[COOKIE_NAME]
|
||||
|
||||
return json.loads(r.text)
|
||||
|
||||
# Domains
|
||||
|
||||
def domain_list(self):
|
||||
r = self.session.get(
|
||||
self.baseurl + "/api/domains",
|
||||
)
|
||||
|
||||
if r.status_code != 200:
|
||||
raise HappyError(r.status_code, **json.loads(r.text))
|
||||
|
||||
ret = []
|
||||
val = json.loads(r.text)
|
||||
|
||||
if val is not None:
|
||||
for au in val:
|
||||
ret.append(Domain(self, **au))
|
||||
|
||||
return ret
|
||||
|
||||
# Providers
|
||||
|
||||
def provider_list(self):
|
||||
r = self.session.get(
|
||||
self.baseurl + "/api/providers",
|
||||
)
|
||||
|
||||
if r.status_code != 200:
|
||||
raise HappyError(r.status_code, **json.loads(r.text))
|
||||
|
||||
ret = []
|
||||
val = json.loads(r.text)
|
||||
|
||||
if val is not None:
|
||||
for au in val:
|
||||
ret.append(Provider(self, **au))
|
||||
|
||||
return ret
|
||||
|
||||
def provider_add(self, type, name, data):
|
||||
r = self.session.post(
|
||||
self.baseurl + "/api/providers",
|
||||
data=json.dumps({
|
||||
"Provider": data,
|
||||
"_comment": name,
|
||||
"_srctype": type,
|
||||
})
|
||||
)
|
||||
|
||||
if r.status_code != 200:
|
||||
raise HappyError(r.status_code, **json.loads(r.text))
|
||||
|
||||
return Provider(self, **json.loads(r.text))
|
Loading…
Add table
Add a link
Reference in a new issue