summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2019-03-23 14:02:21 +0200
committerLars Wirzenius <liw@liw.fi>2019-03-23 14:02:21 +0200
commit0fe5356be8ef7ad542a11965e6a2da42ad5d8bf7 (patch)
tree5264a76c0e29f712a074155355f204ce4acde327
parent11b6285376be9912ff58651eb88c3f0f8d3cd0c1 (diff)
downloadeffitool-0fe5356be8ef7ad542a11965e6a2da42ad5d8bf7.tar.gz
Refactor: put sessions handling into its own class
-rwxr-xr-xeffitool75
1 files changed, 44 insertions, 31 deletions
diff --git a/effitool b/effitool
index af504de..c7ffaa6 100755
--- a/effitool
+++ b/effitool
@@ -196,6 +196,43 @@ class HTTPAPI:
return 'Basic {}'.format(basic.decode('UTF-8'))
+class Session:
+
+ def __init__(self, api, token):
+ self._api = api
+ self._token = token
+
+ def fetch_member(self, rid):
+ headers = {
+ 'Muck-Id': rid,
+ }
+ return self._api.get_json(self._token, '/memb', headers=headers)
+
+ def get_all_member_ids(self):
+ cond = {
+ 'where': 'meta',
+ 'op': '>=',
+ 'field': 'id',
+ 'pattern': '',
+ }
+ return self.search_members(cond)
+
+ def get_all_members(self):
+ return {
+ rid: self.fetch_member(rid)
+ for rid in self.get_all_member_ids()
+ }
+
+ def search_members(self, cond):
+ cond = {'cond': [cond]}
+ body = json.dumps(cond).encode('utf-8')
+ headers = {
+ 'Content-Type': 'application/json',
+ }
+ obj = self._api.get_list(self._token, '/search', headers=headers, body=body)
+ return sorted(obj.get('resources', []))
+
+
class Tool:
def __init__(self, config):
@@ -316,7 +353,8 @@ class Tool:
server = self.get_chosen_server(args)
token = self.get_admin_token(server)
api = HTTPAPI(server['url'])
- memb = self._fetch_member(api, token, args['rid'])
+ session = Session(api, token)
+ memb = session.fetch_member(args['rid'])
self._format_json(memb, sys.stdout)
def update_member(self, args):
@@ -347,44 +385,19 @@ class Tool:
server = self.get_chosen_server(args)
token = self.get_admin_token(server)
api = HTTPAPI(server['url'])
- for rid in self._get_all_member_ids(api, token):
+ session = Session(api, token)
+ for rid in session.get_all_member_ids():
print(rid)
def dump_members(self, args):
server = self.get_chosen_server(args)
token = self.get_admin_token(server)
api = HTTPAPI(server['url'])
- rids = self._get_all_member_ids(api, token)
- members = {
- rid: self._fetch_member(api, token, rid)
- for rid in rids
- }
+ session = Session(api, token)
+ rids = session.get_all_member_ids()
+ members = session.get_all_members()
self._format_json(members, sys.stdout)
- def _fetch_member(self, api, token, rid):
- headers = {
- 'Muck-Id': rid,
- }
- return api.get_json(token, '/memb', headers=headers)
-
- def _get_all_member_ids(self, api, token):
- cond = {
- 'where': 'meta',
- 'op': '>=',
- 'field': 'id',
- 'pattern': '',
- }
- return self._search_members(api, token, cond)
-
- def _search_members(self, api, token, cond):
- cond = {'cond': [cond]}
- body = json.dumps(cond).encode('utf-8')
- headers = {
- 'Content-Type': 'application/json',
- }
- obj = api.get_list(token, '/search', headers=headers, body=body)
- return sorted(obj.get('resources', []))
-
def _format_json(self, obj, output):
return json.dump(obj, output, indent=4, sort_keys=True)