-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapi_call.py
More file actions
executable file
·72 lines (60 loc) · 2.02 KB
/
Copy pathapi_call.py
File metadata and controls
executable file
·72 lines (60 loc) · 2.02 KB
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
#!/usr/bin/python
import argparse
import requests
import os
from urllib.parse import parse_qsl
config = {
"int" : {
"domain": "cald.yosarin.net"
},
"prod" : {
"domain": "api.evidence.czechultimate.cz"
},
"local" : {
"domain": "172.17.0.3"
},
}
user = os.environ["CALD_USER"]
password = os.environ["CALD_PASS"]
def createParser():
parser = argparse.ArgumentParser(description="perform API calls")
parser.add_argument('--production', action="store_true", help="if calls shall be done at prod env")
parser.add_argument('--local', action="store_true", help="if calls shall be done at localhost env")
parser.add_argument('--api')
parser.add_argument('--post', action="store_true")
parser.add_argument('--put', action="store_true")
parser.add_argument('--delete', action="store_true")
parser.add_argument('--token')
parser.add_argument('--data', type=parseData, default={})
return parser
def parseData(data):
tuples = parse_qsl(data)
return { t[0]:t[1] for t in tuples }
def getToken(domain):
response = requests.post("https://%s/user/login" % domain, data={"login":user, "password":password})
return response.json()["token"]["token"]
def callApi(method, domain, url, token, data={}):
data["token"] = token
response = requests.request(method, "https://%s/%s" % (domain, url), data=data)
return response.content
if __name__ == "__main__":
args = createParser().parse_args()
token = args.token
domain = config["int"]["domain"]
if args.production:
domain = config["prod"]["domain"]
if args.local:
domain = config["local"]["domain"]
if token == None:
token = "token"
method = "GET"
if args.post:
method = "POST"
elif args.put:
method = "PUT"
elif args.delete:
method = "DELETE"
if token == None:
token = getToken(domain)
response = callApi(method, domain, args.api, token, args.data)
print(response.decode())