Skip to content

Commit e0c5c39

Browse files
committed
follow upstream updates
Unblocks PythonistaGuild/Pythonista-Bot#41
1 parent f357d17 commit e0c5c39

File tree

4 files changed

+17
-29
lines changed

4 files changed

+17
-29
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ If you want the docs for the `main` branch, those can be found [here](https://my
2121
### Features
2222

2323
- [x] - Creating pastes.
24+
- [ ] Supporting attachments.
2425
- [ ] - Editing pastes.
2526
- Pending design work.
2627
- [x] - Deleting pastes.

mystbin/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ async def create_paste(
136136

137137
resolved_files: Sequence[File] = []
138138
if filename and content:
139-
resolved_files = [File(filename=filename, content=content)]
139+
resolved_files = [File(filename=filename, content=content, attachment_url=None)]
140140
elif file:
141141
resolved_files = [file]
142142

mystbin/paste.py

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,15 @@ class File:
5454
__slots__ = (
5555
"filename",
5656
"content",
57+
"attachment_url",
5758
"_lines_of_code",
5859
"_character_count",
5960
)
6061

61-
def __init__(
62-
self,
63-
*,
64-
filename: str,
65-
content: str,
66-
) -> None:
62+
def __init__(self, *, filename: str, content: str, attachment_url: Optional[str]) -> None:
6763
self.filename: str = filename
6864
self.content: str = content
65+
self.attachment_url: Optional[str] = attachment_url
6966

7067
@property
7168
def lines_of_code(self) -> int:
@@ -77,10 +74,7 @@ def character_count(self) -> int:
7774

7875
@classmethod
7976
def from_data(cls, payload: FileResponse, /) -> Self:
80-
self = cls(
81-
content=payload["content"],
82-
filename=payload["filename"],
83-
)
77+
self = cls(content=payload["content"], filename=payload["filename"], attachment_url=payload["attachment"])
8478
self._lines_of_code = payload["loc"]
8579
self._character_count = payload["charcount"]
8680

@@ -120,16 +114,11 @@ class Paste:
120114
"_last_edited",
121115
)
122116

123-
def __init__(
124-
self,
125-
*,
126-
id: str,
127-
created_at: str,
128-
files: List[File],
129-
) -> None:
117+
def __init__(self, *, id: str, created_at: str, files: List[File], notice: Optional[str]) -> None:
130118
self.id: str = id
131119
self.created_at: datetime.datetime = datetime.datetime.fromisoformat(created_at)
132-
self.files: list[File] = files
120+
self.files: List[File] = files
121+
self.notice: Optional[str] = notice
133122

134123
def __str__(self) -> str:
135124
return self.url
@@ -156,19 +145,15 @@ def views(self) -> Optional[int]:
156145
@classmethod
157146
def from_data(cls, payload: PasteResponse, /) -> Self:
158147
files = [File.from_data(data) for data in payload["files"]]
159-
self = cls(
160-
id=payload["id"],
161-
created_at=payload["created_at"],
162-
files=files,
163-
)
148+
self = cls(id=payload["id"], created_at=payload["created_at"], files=files, notice=payload["notice"])
164149
self._views = payload.get("views")
165-
last_edited = payload.get("last_edited")
150+
last_edited = payload["last_edited"]
166151
if last_edited:
167152
self._last_edited = datetime.datetime.fromisoformat(last_edited)
168153
else:
169154
self._last_edited = None
170155

171-
expires = payload.get("expires")
156+
expires = payload["expires"]
172157
if expires:
173158
self._expires = datetime.datetime.fromisoformat(expires)
174159
else:

mystbin/types/responses.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from __future__ import annotations
2424

2525
from datetime import datetime
26-
from typing import Optional, TypedDict
26+
from typing import List, Optional, TypedDict
2727

2828

2929
__all__ = (
@@ -37,15 +37,17 @@ class FileResponse(TypedDict):
3737
content: str
3838
loc: int
3939
charcount: int
40+
attachment: Optional[str]
4041

4142

4243
class PasteResponse(TypedDict):
4344
id: str
45+
author_id: Optional[int]
4446
created_at: str
4547
expires: Optional[str]
4648
last_edited: Optional[str]
47-
views: int
48-
files: list[FileResponse]
49+
files: List[FileResponse]
50+
notice: Optional[str]
4951

5052

5153
class EditPasteResponse(TypedDict):

0 commit comments

Comments
 (0)