[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 *
|
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",
|
||||||
{
|
{
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Reference in a new issue