-
Notifications
You must be signed in to change notification settings - Fork 0
/
get_spaces.py
68 lines (46 loc) · 1.27 KB
/
get_spaces.py
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
import requests
import json
import time
import os
"""
Dumps a spaces.json file containing info about all the Confluence spaces you can see on the target server.
"""
hostname="wiki.ucl.ac.uk"
url = f"https://{hostname}/rest/api/space"
token = os.getenv("CONFLUENCE_PAC", "")
if token == "":
with open("bearer.token") as f:
token = f.read().rstrip()
headers = {
"Accept": "application/json",
"Authorization": f"Bearer {token}"
}
def get_one_spaces_page(start, limit):
response = requests.request(
"GET",
url,
headers=headers,
params={'start': start, 'limit': limit}
)
rj = response.json()
return rj
all_results = list()
start = 0
page_size = 50
keep_going = True
print("Collecting index of spaces (paginated)...")
while keep_going == True:
rj = get_one_spaces_page(start,page_size)
start = start + page_size
if "next" not in rj["_links"]:
print("Got final page.")
keep_going = False
else:
print(f"Getting next page: start={start}")
all_results.extend(rj["results"])
time.sleep(0.5)
num_spaces = len(all_results)
print(f"Dumping info of {num_spaces} spaces to spaces.json")
with open('spaces.json', 'w') as f:
json.dump(obj=all_results, fp=f, indent=3)
print("Done.")