30
30
31
31
from typing_extensions import Self
32
32
33
- from mystbin .types .responses import CreatePasteResponse , FileResponse , GetPasteResponse
33
+ from .http import HTTPClient
34
+ from .types .responses import CreatePasteResponse , FileResponse , GetPasteResponse
34
35
35
36
36
37
__all__ = (
@@ -126,9 +127,11 @@ class Paste:
126
127
"_security" ,
127
128
"_expires" ,
128
129
"_views" ,
130
+ "_http" ,
129
131
)
130
132
131
- def __init__ (self , * , id : str , created_at : str , files : Sequence [File ]) -> None :
133
+ def __init__ (self , * , http : HTTPClient , id : str , created_at : str , files : Sequence [File ]) -> None :
134
+ self ._http : HTTPClient = http
132
135
self .id : str = id
133
136
self .created_at : datetime .datetime = datetime .datetime .fromisoformat (created_at )
134
137
self .files : Sequence [File ] = files
@@ -156,9 +159,10 @@ def security_token(self) -> str | None:
156
159
return self ._security
157
160
158
161
@classmethod
159
- def from_get (cls , payload : GetPasteResponse , / ) -> Self :
162
+ def from_get (cls , payload : GetPasteResponse , / , * , http : HTTPClient ) -> Self :
160
163
files = [File .from_data (data ) for data in payload ["files" ]]
161
164
self = cls (
165
+ http = http ,
162
166
id = payload ["id" ],
163
167
created_at = payload ["created_at" ],
164
168
files = files ,
@@ -176,8 +180,9 @@ def from_get(cls, payload: GetPasteResponse, /) -> Self:
176
180
return self
177
181
178
182
@classmethod
179
- def from_create (cls , payload : CreatePasteResponse , files : Sequence [File ]) -> Self :
183
+ def from_create (cls , payload : CreatePasteResponse , files : Sequence [File ], * , http : HTTPClient ) -> Self :
180
184
self = cls (
185
+ http = http ,
181
186
id = payload ["id" ],
182
187
created_at = payload ["created_at" ],
183
188
files = files ,
@@ -193,3 +198,9 @@ def from_create(cls, payload: CreatePasteResponse, files: Sequence[File]) -> Sel
193
198
self ._security = payload ["safety" ]
194
199
195
200
return self
201
+
202
+ async def delete (self ) -> None :
203
+ if not self .security_token :
204
+ raise ValueError ("Cannot delete a Paste with no Security Token set." )
205
+
206
+ await self ._http .delete_paste (self .security_token )
0 commit comments