summaryrefslogtreecommitdiff
path: root/mucktool
blob: 1328e2192a26816db19ee786c6c94ba7ac14b2df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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')