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

View file

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