Skip to content

Commit 74d8435

Browse files
committed
Added journal scope handlers
1 parent fee1404 commit 74d8435

3 files changed

Lines changed: 135 additions & 9 deletions

File tree

bugout/app.py

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,17 +154,37 @@ def delete_group(self, token: uuid.UUID, group_id: uuid.UUID) -> data.BugoutGrou
154154
return self.group.delete_group(token, group_id)
155155

156156
# Journal scopes handlers
157-
def get_scopes(self):
158-
pass
157+
def list_scopes(self, token: uuid.UUID, api: str) -> data.BugoutScopes:
158+
return self.journal.list_scopes(token, api)
159159

160-
def get_journal_scopes(self):
161-
pass
160+
def get_journal_scopes(
161+
self, token: uuid.UUID, journal_id: uuid.UUID
162+
) -> data.BugoutJournalScopeSpecs:
163+
return self.journal.get_journal_scopes(token, journal_id)
162164

163-
def update_journal_scopes(self):
164-
pass
165+
def update_journal_scopes(
166+
self,
167+
token: uuid.UUID,
168+
journal_id: uuid.UUID,
169+
holder_type: data.HolderType,
170+
holder_id: uuid.UUID,
171+
permission_list: List[str],
172+
) -> data.BugoutJournalScopeSpecs:
173+
return self.journal.update_journal_scopes(
174+
token, journal_id, holder_type, holder_id, permission_list
175+
)
165176

166-
def delete_journal_scopes(self):
167-
pass
177+
def delete_journal_scopes(
178+
self,
179+
token: uuid.UUID,
180+
journal_id: uuid.UUID,
181+
holder_type: data.HolderType,
182+
holder_id: uuid.UUID,
183+
permission_list: List[str],
184+
) -> data.BugoutJournalScopeSpecs:
185+
return self.journal.delete_journal_scopes(
186+
token, journal_id, holder_type, holder_id, permission_list
187+
)
168188

169189
# Journal handlers
170190
def create_journal(self, token: uuid.UUID, name: str) -> data.BugoutJournal:

bugout/data.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ class TokenType(Enum):
2727
github = "github"
2828

2929

30+
@unique
31+
class HolderType(Enum):
32+
user = "user"
33+
group = "group"
34+
35+
3036
class BugoutUser(BaseModel):
3137
id: uuid.UUID = Field(alias="user_id")
3238
username: str
@@ -85,6 +91,27 @@ class BugoutGroupMembers(BaseModel):
8591
users: List[BugoutUserShort]
8692

8793

94+
class BugoutScope(BaseModel):
95+
api: str
96+
scope: str
97+
description: str
98+
99+
100+
class BugoutScopes(BaseModel):
101+
scopes: List[BugoutScope]
102+
103+
104+
class BugoutJournalScopeSpec(BaseModel):
105+
journal_id: uuid.UUID
106+
holder_type: HolderType
107+
holder_id: str
108+
permission: str
109+
110+
111+
class BugoutJournalScopeSpecs(BaseModel):
112+
scopes: List[BugoutJournalScopeSpec]
113+
114+
88115
class BugoutJournal(BaseModel):
89116
id: uuid.UUID
90117
bugout_user_id: uuid.UUID

bugout/journal.py

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@
22
import uuid
33

44
from .calls import make_request, InvalidUrlSpec
5-
from .data import BugoutJournal, BugoutJournals, Method
5+
from .data import (
6+
BugoutJournal,
7+
BugoutJournals,
8+
BugoutScope,
9+
BugoutScopes,
10+
BugoutJournalScopeSpecs,
11+
HolderType,
12+
Method,
13+
)
614

715

816
class Journal:
@@ -72,3 +80,74 @@ def delete_journal(self, token: uuid.UUID, journal_id: uuid.UUID) -> BugoutJourn
7280
}
7381
result = self._call(method=Method.delete, path=journal_id_path, headers=headers)
7482
return BugoutJournal(**result)
83+
84+
# Scope module
85+
def list_scopes(self, token: uuid.UUID, api: str) -> BugoutScopes:
86+
scopes_path = f"journals/scopes"
87+
json = {
88+
"api": api,
89+
}
90+
headers = {
91+
"Authorization": f"Bearer {token}",
92+
}
93+
result = self._call(
94+
method=Method.get, path=scopes_path, headers=headers, json=json
95+
)
96+
print(result)
97+
return BugoutScopes(**result)
98+
99+
def get_journal_scopes(
100+
self, token: uuid.UUID, journal_id: uuid.UUID
101+
) -> BugoutJournalScopeSpecs:
102+
journal_scopes_path = f"journals/{journal_id}/scopes"
103+
headers = {
104+
"Authorization": f"Bearer {token}",
105+
}
106+
result = self._call(
107+
method=Method.get, path=journal_scopes_path, headers=headers
108+
)
109+
return BugoutJournalScopeSpecs(**result)
110+
111+
def update_journal_scopes(
112+
self,
113+
token: uuid.UUID,
114+
journal_id: uuid.UUID,
115+
holder_type: HolderType,
116+
holder_id: uuid.UUID,
117+
permission_list: List[str],
118+
) -> BugoutJournalScopeSpecs:
119+
journal_scopes_path = f"journals/{journal_id}/scopes"
120+
json = {
121+
"holder_type": holder_type,
122+
"holder_id": holder_id,
123+
"permission_list": permission_list,
124+
}
125+
headers = {
126+
"Authorization": f"Bearer {token}",
127+
}
128+
result = self._call(
129+
method=Method.post, path=journal_scopes_path, headers=headers, json=json
130+
)
131+
return BugoutJournalScopeSpecs(**result)
132+
133+
def delete_journal_scopes(
134+
self,
135+
token: uuid.UUID,
136+
journal_id: uuid.UUID,
137+
holder_type: HolderType,
138+
holder_id: uuid.UUID,
139+
permission_list: List[str],
140+
) -> BugoutJournalScopeSpecs:
141+
journal_scopes_path = f"journals/{journal_id}/scopes"
142+
json = {
143+
"holder_type": holder_type,
144+
"holder_id": holder_id,
145+
"permission_list": permission_list,
146+
}
147+
headers = {
148+
"Authorization": f"Bearer {token}",
149+
}
150+
result = self._call(
151+
method=Method.delete, path=journal_scopes_path, headers=headers, json=json
152+
)
153+
return BugoutJournalScopeSpecs(**result)

0 commit comments

Comments
 (0)