[mod] api

This commit is contained in:
roydfalk 2024-06-21 14:26:57 +02:00
parent 0898341511
commit 9832ec7e20
2 changed files with 36 additions and 30 deletions

View file

@ -7,16 +7,19 @@ from conf import *
from log import *
_session_key = None
def backend_api_call_generic(
session_key,
http_method,
action_path,
data
):
global _session_key
log_info(
"backend_api_call",
{
"with_session_key": (not (session_key is None)),
"with_session_key": (not (_session_key is None)),
"http_method": http_method,
"path": action_path,
}
@ -31,41 +34,50 @@ def backend_api_call_generic(
"path_action": action_path,
}
)
headers_common = (
{}
if (_session_key is None) else
{"X-Session-Key": _session_key}
)
if (http_method == "GET"):
response_raw = _requests.get(
target,
headers = {
"X-Session-Key": session_key,
}
headers = (
headers_common
)
)
return _json.loads(response_raw.text)
elif (http_method == "POST"):
response_raw = _requests.post(
target,
headers = {
headers = (
headers_common
|
{
"Content-Type": "application/json",
"X-Session-Key": session_key,
},
}
),
json = data
)
return _json.loads(response_raw.text)
elif (http_method == "DELETE"):
response_raw = _requests.delete(
target,
headers = {
"X-Session-Key": session_key,
},
headers = (
headers_common
),
json = data
)
return _json.loads(response_raw.text)
else:
raise NotImplementedError("unhandled HTTP method: %s" % http_method)
if ((response_raw.status_code < 200) or (response_raw.status_code >= 300)):
raise ValueError("irregular HTTP response status code: %u" % response_raw.status_code)
else:
return _json.loads(response_raw.text)
def backend_api_call_session_begin(
) -> str:
return backend_api_call_generic(
None,
):
global _session_key
session_key = backend_api_call_generic(
"POST",
"/session/begin",
{
@ -73,13 +85,13 @@ def backend_api_call_session_begin(
"password": conf_get()["account"]["password"],
}
)
_session_key = session_key
return None
def backend_api_call_session_end(
session_key
):
return backend_api_call_generic(
session_key,
"DELETE",
"/session/end",
None
@ -87,10 +99,8 @@ def backend_api_call_session_end(
def backend_api_call_member_list(
session_key : str
):
return backend_api_call_generic(
session_key,
"GET",
"/member/list",
None
@ -98,14 +108,12 @@ def backend_api_call_member_list(
def backend_api_call_member_project(
session_key : str,
membership_number : _typing.Optional[str],
name_real_value : str,
email_address_private : _typing.Optional[str],
notification_target_url_template : _typing.Optional[str]
):
return backend_api_call_generic(
session_key,
"POST",
"/member/project",
{

View file

@ -88,11 +88,10 @@ def main():
elif (args.action == "conf-expose"):
_sys.stdout.write(_json.dumps(conf_get(), indent = "\t") + "\n")
elif (args.action == "member-list"):
session_key = backend_api_call_session_begin()
backend_api_call_session_begin()
data = backend_api_call_member_list(
session_key
)
backend_api_call_session_end(session_key)
backend_api_call_session_end()
_sys.stdout.write(_json.dumps(data, indent = "\t") + "\n")
elif (args.action == "member-project"):
if (
@ -113,15 +112,14 @@ def main():
}
)
else:
session_key = backend_api_call_session_begin()
backend_api_call_session_begin()
member_id = backend_api_call_member_project(
session_key,
args.membership_number,
args.name,
args.email_address,
None
)
backend_api_call_session_end(session_key)
backend_api_call_session_end()
_sys.stdout.write(_json.dumps(member_id, indent = "\t") + "\n")
else:
raise NotImplementedError()