Skip to content

Commit 4f1dc72

Browse files
authored
Allow shortlinks (#837)
* update wk to 20617 * add generated client for short links * resolve short links for annotation and dataset urls * add changelog entry * Update webknossos/__generate_client.py * minor style fix * use urlparse
1 parent f471e70 commit 4f1dc72

26 files changed

+135822
-41422
lines changed

webknossos/Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ For upgrade instructions, please check the respective *Breaking Changes* section
1515
### Breaking Changes
1616

1717
### Added
18+
- Short links, such as `https://webknossos.org/links/93zLg9U9vJ3c_UWp`, are now supported for dataset and annotation urls in `download` and `open_remote` methods. [#837](https://github.com/scalableminds/webknossos-libs/pull/837)
1819

1920
### Changed
2021

webknossos/__generate_client.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def iterate_request_ids_with_responses() -> Iterable[Tuple[str, bytes]]:
9090
generate_token_for_data_store,
9191
project_info_by_id,
9292
project_info_by_name,
93+
short_link_by_key,
9394
task_info,
9495
task_infos_by_project_id,
9596
team_list,
@@ -115,7 +116,7 @@ def iterate_request_ids_with_responses() -> Iterable[Tuple[str, bytes]]:
115116
)
116117
response = httpx.get(
117118
url=f"{WK_URL}/api/datasets/{organization_id}/{dataset_name}",
118-
headers={"X-Auth-Token": f"{WK_TOKEN}"},
119+
headers={"X-Auth-Token": WK_TOKEN},
119120
)
120121
assert (
121122
response.status_code == 200 and response.json()["isActive"]
@@ -240,6 +241,22 @@ def iterate_request_ids_with_responses() -> Iterable[Tuple[str, bytes]]:
240241
),
241242
)
242243

244+
short_link_key = httpx.post(
245+
url=f"{WK_URL}/api/shortLinks",
246+
json=WK_URL,
247+
headers={"X-Auth-Token": WK_TOKEN},
248+
).json()["key"]
249+
250+
yield (
251+
"shortLinkByKey",
252+
extract_200_response(
253+
short_link_by_key.sync_detailed(
254+
key=short_link_key,
255+
client=client,
256+
),
257+
),
258+
)
259+
243260
for api_endpoint in [
244261
datastore_list,
245262
build_info,
@@ -322,6 +339,8 @@ def iterate_request_ids_with_responses() -> Iterable[Tuple[str, bytes]]:
322339
"tags",
323340
"isPublic",
324341
"allowedTeams",
342+
##### Short links ####
343+
"longLink",
325344
}
326345

327346
# Those key-pairs of (parent-key, child-key) mark exceptions

webknossos/local_wk_setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
function export_vars {
22
export WK_TOKEN=1b88db86331a38c21a0b235794b9e459856490d70408bcffb767f64ade0f83d2bdb4c4e181b9a9a30cdece7cb7c65208cc43b6c1bb5987f5ece00d348b1a905502a266f8fc64f0371cd6559393d72e031d0c2d0cabad58cccf957bb258bc86f05b5dc3d4fff3d5e3d9c0389a6027d861a21e78e3222fb6c5b7944520ef21761e
33
export WK_URL=http://localhost:9000
4-
export DOCKER_TAG=master__19264
4+
export DOCKER_TAG=master__20617
55
}
66

77
function ensure_local_test_wk {

webknossos/tests/cassettes/test_annotation/test_annotation_from_url.yaml renamed to webknossos/tests/cassettes/test_annotation/test_annotation_from_url[61c20205010000cc004a6356].yaml

Lines changed: 41394 additions & 41398 deletions
Large diffs are not rendered by default.

webknossos/tests/cassettes/test_annotation/test_annotation_from_url[LNir_A2-aCUzsoSL].yaml

Lines changed: 90047 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
interactions:
2+
- request:
3+
body: ''
4+
headers:
5+
accept:
6+
- '*/*'
7+
accept-encoding:
8+
- gzip, deflate
9+
connection:
10+
- keep-alive
11+
host:
12+
- webknossos.org
13+
user-agent:
14+
- python-httpx/0.18.2
15+
method: GET
16+
uri: https://webknossos.org/api/shortLinks/byKey/93zLg9U9vJ3c_UWp
17+
response:
18+
content: '{"_id":"638f66890100006501d8ac2c","key":"93zLg9U9vJ3c_UWp","longLink":"https://webknossos.org/datasets/scalable_minds/l4_sample_dev_sharing/view?token=ilDXmfQa2G8e719vb1U9YQ#%7B%22position%22:%5B2807,4352,1794%5D,%22mode%22:%22orthogonal%22,%22zoomStep%22:1.3,%22stateByLayer%22:%7B%22color%22:%7B%22isDisabled%22:false%7D,%22segmentation%22:%7B%22isDisabled%22:false%7D%7D%7D"}'
19+
headers:
20+
connection:
21+
- keep-alive
22+
content-length:
23+
- '378'
24+
content-type:
25+
- application/json
26+
date: Mon, 01 Jan 2000 00:00:00 GMT
27+
referrer-policy:
28+
- origin-when-cross-origin, strict-origin-when-cross-origin
29+
strict-transport-security:
30+
- max-age=15724800; includeSubDomains
31+
x-permitted-cross-domain-policies:
32+
- master-only
33+
x-xss-protection:
34+
- 1; mode=block
35+
http_version: HTTP/1.1
36+
status_code: 200
37+
- request:
38+
body: ''
39+
headers:
40+
accept:
41+
- '*/*'
42+
accept-encoding:
43+
- gzip, deflate
44+
connection:
45+
- keep-alive
46+
host:
47+
- webknossos.org
48+
user-agent:
49+
- python-httpx/0.18.2
50+
method: GET
51+
uri: https://webknossos.org/api/datasets/scalable_minds/l4_sample_dev_sharing?sharingToken=ilDXmfQa2G8e719vb1U9YQ
52+
response:
53+
content: '{"name":"l4_sample_dev_sharing","dataSource":{"id":{"name":"l4_sample_dev_sharing","team":"scalable_minds"},"dataLayers":[{"name":"color","category":"color","boundingBox":{"topLeft":[2679,4224,1719],"width":256,"height":256,"depth":150},"resolutions":[[1,1,1],[2,2,1],[4,4,2]],"elementClass":"uint8"},{"name":"segmentation","category":"segmentation","boundingBox":{"topLeft":[2679,4224,1719],"width":256,"height":256,"depth":150},"resolutions":[[1,1,1],[2,2,1],[4,4,2]],"elementClass":"uint32","largestSegmentId":5238529}],"scale":[11.239999771118164,11.239999771118164,28]},"dataStore":{"name":"webknossos.org","url":"https://data-humerus.webknossos.org","isScratch":false,"isConnector":false,"allowsUpload":true},"owningOrganization":"scalable_minds","allowedTeams":[],"allowedTeamsCumulative":[],"isActive":true,"isPublic":false,"description":null,"displayName":null,"created":1647612907522,"isEditable":false,"lastUsedByUser":1010101010101,"logoUrl":"https://static.webknossos.org/logos/scalableminds.svg","sortingKey":1647612907522,"details":null,"isUnreported":false,"jobsEnabled":true,"tags":[],"folderId":"638727a60b62b016daeaa60e","publication":null}'
54+
headers:
55+
connection:
56+
- keep-alive
57+
content-length:
58+
- '1147'
59+
content-type:
60+
- application/json
61+
date: Mon, 01 Jan 2000 00:00:00 GMT
62+
referrer-policy:
63+
- origin-when-cross-origin, strict-origin-when-cross-origin
64+
strict-transport-security:
65+
- max-age=15724800; includeSubDomains
66+
x-permitted-cross-domain-policies:
67+
- master-only
68+
x-xss-protection:
69+
- 1; mode=block
70+
http_version: HTTP/1.1
71+
status_code: 200
72+
- request:
73+
body: ''
74+
headers:
75+
accept:
76+
- '*/*'
77+
accept-encoding:
78+
- gzip, deflate
79+
connection:
80+
- keep-alive
81+
host:
82+
- data-humerus.webknossos.org
83+
user-agent:
84+
- python-httpx/0.18.2
85+
method: GET
86+
uri: https://data-humerus.webknossos.org/data/datasets/scalable_minds/l4_sample_dev_sharing/layers/color/data?depth=10&halfByte=false&height=10&mag=1-1-1&width=10&x=2807&y=4352&z=1794
87+
response:
88+
content: !!binary |
89+
g5GThpWTi4l+gY6UkpCKh5h9k4qNmZGZepaTjn6Dk4qOg4qFgIyGl4OBkZqakH2ThIKPjYaUkJyC
90+
c4l8fYyDaYWVjX95dXx1fqGCfox2cW5ucHhvcm5paWhXY2lrYm5dYXJpYZOalZWPipeKf4aKkIyG
91+
i4+bdYZlgIiQi4+LipWJfo2Klo6PfZGUhXiPiZihipeBh4uCkX6OjIuGhXt7b3Z+hIaGcXtpaWd6
92+
c3ttgWpsam9hX3BpbFloaXppWnVscm1rZGhjcW6QgY+MkISChXFvmYeQh4iKjXtxaH+NhYKTlnSA
93+
W26Mk4Z/jI99gmlpi32Ei4mPkX1tdX1tiYB7hntzbGJ0eGZ9dHmBUmxbY1l1dW9xWGJtc19xYml3
94+
enRZenR/cGJqcHGDeIODeYptf2pnbXRniI2DcXJ1Z1VnYmd9i4F1cmJpYGtpiIx3dnFUYGpvZnl+
95+
hH9vdV5iZmtzZWlqalleaHhuYV9QYXJYWGlibVZyXWpwb3ZsX3Vxh2tlhIN6hIJ1d314f4OEgYmP
96+
j2NzZGBtb313fIRxdnhiaVhtgWpzZV52Y1JhZG5ramZoZ2ZoYVtrbWhyZmlsYXJoZ2ZiV09obnly
97+
cH95dmFaY2mScWyBeICIgneTf392i4eIh5KNh5KVjoeVk5yPk5OGf5SNg5JqXmV0aGyH1ZGJaGJV
98+
eXNohVSJgW5oZ21hZ22KcoJaUmRecGFwSWJxZmViZkVvaHRoZXFZcmuUb4J/Znd/d252eIaAgop9
99+
kJKPiZ6Sfol+hKeSi5WOkoqAhIyNlI+Vh5+Ji4ugb2qAgpCEgouNimJqcYZ8kpKKhJl0aG5ue4GL
100+
hYF+YnJsY2Brg3h1b2JbamZiYWZnfXB6cW5+ZWl1YWtrrHKDhYx4h3Nva3aIkpKHeoWUg5S6nHyU
101+
hZyPkoiNe3yPhoZ/koeVkGqLh49+lIeHd4d2bHx7f4uJmIyZYndzcXZojHh1gXhpdGNwWV9vc3F8
102+
fnR7e2FrZ2JnioKDgHp8ZmRgd4mOhYeAgn1wd3aSnYiWhYR1f3p5mIGOlIeRgI6TiYmKj5iQlYWL
103+
k5BlgIh2oYuFhZGCbWJranZ6i4GHhmlaZ3VhdICAfYJqaHN6lGVyhXyGhoOIbmhgb1x6XYuckIuX
104+
g3VmX2aAhpCTh3V5d3NwiZGEknKIipJ3eIaMhZSkjXB8i5eEfYyDhJaWkpiYb2pocXWIkYuTiWhw
105+
Y2d5aoGMeoVmTmNecHd7hHmCb1hsZGxoZXV0f3pxY1ZNc2d1c2R9g3NoV2toXk5wg3qRem1nbXB2
106+
bX90h4Z8eW93anJ5f4+WfHqAcHV5e4mQinN/eoaBgA==
107+
headers:
108+
access-control-allow-origin:
109+
- '*'
110+
access-control-expose-headers:
111+
- MISSING-BUCKETS
112+
access-control-max-age:
113+
- '600'
114+
connection:
115+
- keep-alive
116+
content-length:
117+
- '1000'
118+
content-type:
119+
- application/octet-stream
120+
date: Mon, 01 Jan 2000 00:00:00 GMT
121+
missing-buckets:
122+
- '[]'
123+
referrer-policy:
124+
- origin-when-cross-origin, strict-origin-when-cross-origin
125+
strict-transport-security:
126+
- max-age=15724800; includeSubDomains
127+
x-frame-options:
128+
- DENY
129+
x-permitted-cross-domain-policies:
130+
- master-only
131+
x-xss-protection:
132+
- 1; mode=block
133+
http_version: HTTP/1.1
134+
status_code: 200
135+
- request:
136+
body: ''
137+
headers:
138+
accept:
139+
- '*/*'
140+
accept-encoding:
141+
- gzip, deflate
142+
connection:
143+
- keep-alive
144+
host:
145+
- data-humerus.webknossos.org
146+
user-agent:
147+
- python-httpx/0.18.2
148+
method: GET
149+
uri: https://data-humerus.webknossos.org/data/datasets/scalable_minds/l4_sample_dev_sharing/layers/segmentation/data?depth=10&halfByte=false&height=10&mag=1-1-1&width=10&x=2807&y=4352&z=1794
150+
response:
151+
content: !!binary |
152+
buZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu
153+
5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7m
154+
TwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZP
155+
AG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8A
156+
buZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu
157+
5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7m
158+
TwBu5k8AbuZPAG7mTwBu5k8AH9RPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AH9RP
159+
AG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8A
160+
buZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu
161+
5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7m
162+
TwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZP
163+
AG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8A
164+
buZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AH9RPAG7mTwBu5k8AbuZPAG7mTwBu
165+
5k8AbuZPAG7mTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
166+
TwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZP
167+
AG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8A
168+
buZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu
169+
5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7m
170+
TwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZP
171+
AG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
172+
H9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf
173+
1E8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAHbSTwB20k8AdtJPAG7mTwBu5k8AbuZPAG7m
174+
TwBu5k8AbuZPAG7mTwB20k8AdtJPAHbSTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZP
175+
AHbSTwB20k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwB20k8AdtJPAG7mTwBu5k8A
176+
buZPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAHbSTwBu5k8AbuZPAG7mTwBu5k8AbuZPAG7mTwBu
177+
5k8AH9RPAB/UTwAf1E8AbuZPAG7mTwBu5k8AbuZPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
178+
TwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RP
179+
AB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
180+
H9RPAG7mTwBu5k8AbuZPAG7mTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwBu5k8AbuZPAG7mTwBu
181+
5k8AbuZPAHbSTwB20k8AdtJPAHbSTwB20k8AbuZPAG7mTwBu5k8AbuZPAG7mTwB20k8AdtJPAHbS
182+
TwB20k8AdtJPAG7mTwBu5k8AbuZPAG7mTwBu5k8AbuZPAHbSTwB20k8AdtJPAHbSTwBu5k8AbuZP
183+
AG7mTwBu5k8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
184+
H9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf
185+
1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
186+
TwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RP
187+
AB/UTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8A
188+
dtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAB/UTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB2
189+
0k8AdtJPAHbSTwAf1E8AH9RPAB/UTwAf1E8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AH9RPAB/U
190+
TwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RP
191+
AB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
192+
H9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf
193+
1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
194+
TwAf1E8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJP
195+
AHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8A
196+
dtJPAHbSTwB20k8AH9RPAB/UTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAB/UTwAf
197+
1E8AH9RPAB/UTwAf1E8AH9RPAHbSTwB20k8AdtJPAHbSTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
198+
TwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RP
199+
AB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
200+
H9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf
201+
1E8AH9RPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbS
202+
TwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AH9RPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJP
203+
AHbSTwB20k8AdtJPAB/UTwAf1E8AH9RPAB/UTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwAf1E8A
204+
H9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AdtJPAHbSTwB20k8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf
205+
1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
206+
TwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RP
207+
AB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
208+
H9RPAB/UTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AH9RPAHbSTwB2
209+
0k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAB/UTwAf1E8AdtJPAHbSTwB20k8AdtJPAHbS
210+
TwB20k8AdtJPAHbSTwAf1E8AH9RPAB/UTwAf1E8AH9RPAHbSTwB20k8AdtJPAHbSTwB20k8AH9RP
211+
AB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAHbSTwB20k8AdtJPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
212+
H9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf
213+
1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
214+
TwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RP
215+
AB/UTwAf1E8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwB20k8A
216+
dtJPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAHbSTwAf1E8AH9RPAHbSTwB20k8AdtJPAHbSTwB2
217+
0k8AdtJPAHbSTwB20k8AH9RPAB/UTwAf1E8AH9RPAHbSTwB20k8AdtJPAHbSTwB20k8AdtJPAB/U
218+
TwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwB20k8AdtJPAHbSTwAf1E8AH9RPAB/UTwAf1E8AH9RP
219+
AB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8A
220+
H9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf
221+
1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/UTwAf1E8AH9RPAB/U
222+
TwAf1E8AH9RPAA==
223+
headers:
224+
access-control-allow-origin:
225+
- '*'
226+
access-control-expose-headers:
227+
- MISSING-BUCKETS
228+
access-control-max-age:
229+
- '600'
230+
connection:
231+
- keep-alive
232+
content-length:
233+
- '4000'
234+
content-type:
235+
- application/octet-stream
236+
date: Mon, 01 Jan 2000 00:00:00 GMT
237+
missing-buckets:
238+
- '[]'
239+
referrer-policy:
240+
- origin-when-cross-origin, strict-origin-when-cross-origin
241+
strict-transport-security:
242+
- max-age=15724800; includeSubDomains
243+
x-frame-options:
244+
- DENY
245+
x-permitted-cross-domain-policies:
246+
- master-only
247+
x-xss-protection:
248+
- 1; mode=block
249+
http_version: HTTP/1.1
250+
status_code: 200
251+
version: 1

0 commit comments

Comments
 (0)