[mod] api
This commit is contained in:
parent
0898341511
commit
9832ec7e20
2 changed files with 36 additions and 30 deletions
|
@ -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 = {
|
||||
"Content-Type": "application/json",
|
||||
"X-Session-Key": session_key,
|
||||
},
|
||||
headers = (
|
||||
headers_common
|
||||
|
|
||||
{
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
),
|
||||
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",
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Add table
Reference in a new issue