From 808e642e224fa7a46f06baf8e30de979b02c2048 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 17 Nov 2018 18:11:07 +0200 Subject: Change: use separate URL for tokens, list resources --- effitool | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/effitool b/effitool index f6cd0d2..1e304f5 100755 --- a/effitool +++ b/effitool @@ -117,9 +117,9 @@ class HttpAPI: if 'auth' in kwargs: del kwargs['auth'] - logging.info( - 'Request: %s url=%s headers=%s verify=%s kwargs=%s', - func.__func__.__name__, url, headers, self._verify, kwargs) +# logging.info( +# 'Request: %s url=%s headers=%s verify=%s kwargs=%s', +# func.__func__.__name__, url, headers, self._verify, kwargs) r = func(url, headers=headers, verify=self._verify, **kwargs) if not r.ok: raise HttpError('{}: {}'.format(r.status_code, r.text)) @@ -128,9 +128,9 @@ class HttpAPI: class EffiAPI: - def __init__(self, url, client_id, client_secret, fake=False): + def __init__(self, url, token_url, client_id, client_secret, fake=False): self._url = url - self._auth_url = '{}/token'.format(url) + self._auth_url = '{}/token'.format(token_url) self._http_api = HttpAPI() self._client_id = client_id self._client_secret = client_secret @@ -164,6 +164,13 @@ class EffiAPI: obj = r.json() return obj['access_token'] + def get_member(self, rid): + url = self.url('/mem') + headers = { + 'Muck-Id': rid, + } + return self._http_api.get_dict(url, headers) + def get_status(self): url = self.url('/status') return self._http_api.get_dict(url) @@ -188,8 +195,18 @@ class EffiAPI: }, ] } - obj = self._http_api.get_dict(url, body=cond) - return obj['resources'] + headers = { + 'Content-Type': 'application/json', + } + obj = self._http_api.get_dict( + url, body=json.dumps(cond), headers=headers) + rids = obj['resources'] + members = [] + for rid in rids: + logging.info('Retrieving member %s', rid) + mem = self.get_member(rid) + members.append(mem) + return members def find_member_by_email(self, email): objs = self.list_members() @@ -207,14 +224,13 @@ class EffiTool: p = self._create_command_line_parser() args = vars(p.parse_args()) self._setup_logging(args['logfile']) - self._api = self._new_api(args, True) func = args.pop('func') if func is None: logging.error('missing command on command line') sys.exit('ERROR: Missing command') - api = self._new_api(args, True) + api = self._new_api(args, args['fake']) try: logging.debug('calling %r with %r', func.__name__, args) value = func(args, api) @@ -277,6 +293,7 @@ class EffiTool: parser = argparse.ArgumentParser(description='Manage Effi members') parser.add_argument('-u', '--url', dest='url', required=True) + parser.add_argument('-t', '--token-url', dest='token_url', required=True) parser.add_argument('-i', '--client-id', dest='client_id', required=True) parser.add_argument( '-s', '--client-secret', dest='client_secret', required=True) @@ -294,7 +311,10 @@ class EffiTool: return parser def _new_api(self, args, fake): - return EffiAPI(args['url'], args['client_id'], args['client_secret'], fake=fake) + return EffiAPI( + args['url'], args['token_url'], + args['client_id'], args['client_secret'], + fake=fake) def _setup_logging(self, filename): logging.basicConfig( -- cgit v1.2.1