From e56dc8c293acc9128f5c3ac615b3336214c9b9b9 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 14 Jul 2019 11:55:16 +0300 Subject: Add: mucktool --- mucktool | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 mucktool diff --git a/mucktool b/mucktool new file mode 100755 index 0000000..1328e21 --- /dev/null +++ b/mucktool @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 + +import json +import sys + +import requests + + +def get_token(url, client_id, client_secret, scopes): + url = '{}/token'.format(url) + auth = (client_id, client_secret) + data = { + 'grant_type': 'client_credentials', + 'scope': ' '.join(scopes), + } + + r = requests.post(url, auth=auth, data=data) + if not r.ok: + sys.exit('HTTP error: {} {}'.format(r.status_code, r.text)) + obj = r.json() + return obj[u'access_token'] + + +def create(url, token, obj): + url = '{}/res'.format(url) + headers = get_authz_headers(token) + r = requests.post(url, headers=headers, data=obj) + if not r.ok: + sys.exit('HTTP error: {} {}'.format(r.status_code, r.text)) + return r.headers['Muck-Id'] + + +def show(url, token, rid): + url = '{}/res'.format(url) + headers = get_authz_headers(token) + headers['Muck-Id'] = rid + r = requests.get(url, headers=headers) + if not r.ok: + sys.exit('HTTP error: {} {}'.format(r.status_code, r.text)) + return r.json() + + +def get_authz_headers(token): + return { + 'Authorization': 'Bearer {}'.format(token), + } + + +args = sys.argv[1:] + +base_url = args.pop(0) +client_id = args.pop(0) +client_secret = args.pop(0) +cmd = args.pop(0) + +if cmd == 'token': + scopes = args + token = get_token(base_url, client_id, client_secret, scopes) + print(token) +elif cmd == 'create': + obj = args.pop(0) + scopes = ['create'] + token = get_token(base_url, client_id, client_secret, scopes) + ret = create(base_url, token, obj) + print(ret) +elif cmd == 'show': + rid = args.pop(0) + scopes = ['show'] + token = get_token(base_url, client_id, client_secret, scopes) + obj = show(base_url, token, rid) + print(obj) +else: + sys.exit('Do not understand') -- cgit v1.2.1