#!/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')