Skip to content

Commit f27fa95

Browse files
committed
Implement rest of page namespace
1 parent 71df5db commit f27fa95

File tree

3 files changed

+46
-14
lines changed

3 files changed

+46
-14
lines changed

scuttle/versions/base.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@ def __init__(self, domain, api_key):
99
domain, type(self).version)
1010
self.api_key = api_key
1111

12-
def request(self, namespace, value=None):
13-
response = requests.get(
12+
def _request(self, namespace, value=None, data=None):
13+
method = 'get' if data is None else 'post'
14+
send = {'headers': {"Authorization": "Bearer {}".format(self.api_key)}}
15+
if data is not None:
16+
send['data'] = data
17+
response = getattr(requests, method)(
1418
"{}/{}".format(
1519
self.endpoint,
1620
namespace.format(value)),
17-
headers={"Authorization": "Bearer {}".format(self.api_key)})
21+
**send)
1822
print(response.text)
1923
return response.json()

scuttle/versions/v1.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,38 @@ class Api(BaseApi):
99
version = 1
1010

1111
def wikis(self):
12-
return self.request("wikis")
12+
return self._request("wikis")
1313

1414
def wiki(self):
15-
return self.request("wiki")
15+
return self._request("wiki")
1616

1717
def all_pages(self):
18-
return self.request("page")
18+
return self._request("page")
1919

2020
def page_by_id(self, page_id):
21-
return self.request("page/{}", page_id)
21+
return self._request("page/{}", page_id)
2222

2323
def page_by_slug(self, page_slug):
24-
return self.request("page/slug/{}", page_slug)
24+
return self._request("page/slug/{}", page_slug)
2525

26-
def page_revisions(self, page_id):
27-
return self.request("page/{}/revisions", page_id)
26+
def all_page_revisions(self, page_id):
27+
return self._request("page/{}/revisions", page_id)
28+
29+
def page_revisions(self, page_id, *, limit=20, offset=0, direction="asc"):
30+
data = {'limit': limit, 'offset': offset, 'direction': direction}
31+
return self._request("page/{}/revisions", page_id, data)
32+
33+
def page_votes(self, page_id):
34+
return self._request("page/{}/votes", page_id)
35+
36+
def page_tags(self, page_id):
37+
return self._request("page/{}/tags", page_id)
38+
39+
def page_files(self, page_id):
40+
return self._request("page/{}/files", page_id)
2841

2942
def get_revision(self, revision_id):
30-
return self.request("revision/{}", revision_id)
43+
return self._request("revision/{}", revision_id)
3144

3245
def get_full_revision(self, revision_id):
33-
return self.request("revision/{}/full", revision_id)
46+
return self._request("revision/{}/full", revision_id)

test/test_api.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#!/usr/bin/env python3
22

33
import os
4+
import dateutil.parser as dp
5+
46
import pytest
7+
58
import scuttle
69

710
API_KEY = os.environ['SCUTTLE_API_KEY']
@@ -33,13 +36,25 @@ def test_page():
3336
assert set(pages[0].keys()) == {'id', 'slug', 'wd_page_id'}
3437
page_id = pages[0]['id']
3538
assert wiki.page_by_id(page_id)['id'] == page_id
36-
assert wiki.page_by_slug("scp-1111")['metadata']['wikidot_metadata']['fullname'] == "scp-1111"
39+
assert wiki.page_by_slug("scp-001")['metadata']['wikidot_metadata']['fullname'] == "scp-001"
40+
if len(votes := wiki.page_votes(page_id)) > 0:
41+
assert isinstance(votes[0]['vote'], int)
42+
if len(tags := wiki.page_tags(page_id)) > 0:
43+
assert isinstance(tags[0]['name'], str)
44+
if len(files := wiki.page_files(page_id)) > 0:
45+
assert isinstance(files[0]['path'], str)
46+
3747

3848
def test_revisions():
3949
wiki = scuttle.scuttle('en', API_KEY, 1)
4050
page_id = wiki.all_pages()[0]['id']
41-
revision_id = wiki.page_revisions(page_id)[0]['id']
51+
revision_id = wiki.all_page_revisions(page_id)[0]['id']
4252
assert wiki.get_revision(revision_id)['page_id'] == page_id
4353
full_revision = wiki.get_full_revision(revision_id)
4454
assert full_revision['page_id'] == page_id
4555
assert 'content' in full_revision
56+
first_rev = wiki.page_revisions(page_id, limit=1, direction="asc")
57+
assert len(first_rev) == 1
58+
final_rev = wiki.page_revisions(page_id, limit=1, direction="desc")
59+
assert dp.parse(first_rev[0]['created_at']) <= dp.parse(final_rev[0]['created_at'])
60+

0 commit comments

Comments
 (0)