Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7f41073

Browse filesBrowse files
committed
Added more docs
1 parent a591781 commit 7f41073
Copy full SHA for 7f41073

File tree

Expand file treeCollapse file tree

1 file changed

+55
-19
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+55
-19
lines changed

‎tempmail/providers.py

Copy file name to clipboardExpand all lines: tempmail/providers.py
+55-19Lines changed: 55 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,43 @@
1313
class OneSecMail:
1414
"""1secmail.com API wrapper"""
1515

16-
def __init__(self, email: str | None = None, username: str | None = None, domain: str | None = None) -> None:
17-
if email is not None:
18-
username, domain = email.split('@')
16+
def __init__(self, address: str | None = None, username: str | None = None, domain: str | None = None) -> None:
17+
"""Create a new 1secmail.com email address
18+
19+
:param address: The full email address (username@domain)
20+
:param username: The username of the email address (before the @)
21+
:param domain: The domain of the email address (after the @)
22+
"""
23+
24+
if address is not None:
25+
username, domain = address.split('@')
1926

2027
if domain is not None and domain not in self.get_domains():
2128
raise ValueError(f'Invalid domain: {domain}')
2229

23-
self.session = requests.Session()
30+
self._session = requests.Session()
2431
self.username = username or utils.random_string(10)
32+
"""The username of the email address (before the @)"""
2533
self.domain = domain or random.choice(self.get_domains())
34+
"""The domain of the email address (after the @)"""
2635

2736
def get_inbox(self) -> list['OneSecMail.MessageInfo']:
2837
"""Get the inbox of the email address"""
29-
resp = self.session.get(f'https://www.1secmail.com/api/v1/?action=getMessages&login={self.username}&domain={self.domain}')
38+
resp = self._session.get(f'https://www.1secmail.com/api/v1/?action=getMessages&login={self.username}&domain={self.domain}')
3039
resp.raise_for_status()
3140
return [OneSecMail.MessageInfo.from_dict(self, msg_info) for msg_info in resp.json()]
3241

3342
@utils.cache
3443
def get_message(self, id: int) -> 'OneSecMail.Message':
3544
"""Get a message from the inbox"""
36-
resp = self.session.get(f'https://www.1secmail.com/api/v1/?action=readMessage&login={self.username}&domain={self.domain}&id={id}')
45+
resp = self._session.get(f'https://www.1secmail.com/api/v1/?action=readMessage&login={self.username}&domain={self.domain}&id={id}')
3746
resp.raise_for_status()
3847
return OneSecMail.Message.from_dict(self, resp.json())
3948

4049
@utils.cache
4150
def download_attachment(self, id: int, file: str) -> bytes:
4251
"""Download an attachment from a message as bytes"""
43-
resp = self.session.get(f'https://www.1secmail.com/api/v1/?action=download&login={self.username}&domain={self.domain}&id={id}&file={file}')
52+
resp = self._session.get(f'https://www.1secmail.com/api/v1/?action=download&login={self.username}&domain={self.domain}&id={id}&file={file}')
4453
resp.raise_for_status()
4554
return resp.content
4655

@@ -83,24 +92,33 @@ def __str__(self) -> str:
8392

8493
@dataclass
8594
class MessageInfo:
95+
"""Information about a message in the inbox"""
96+
8697
id: int
98+
"Message ID"
8799
from_addr: str
100+
"Sender email address"
88101
subject: str
102+
"Subject of the message"
89103
date_str: str
90-
_mail: 'OneSecMail'
104+
"Date the message was received in format YYYY-MM-DD HH:MM:SS"
105+
_mail_instance: 'OneSecMail'
91106

92107
@property
93108
def date(self) -> datetime:
109+
"""Date the message was received"""
94110
return datetime.fromisoformat(self.date_str)
95111

96112
@property
97113
def message(self) -> 'OneSecMail.Message':
98-
return self._mail.get_message(self.id)
114+
"""The full message"""
115+
return self._mail_instance.get_message(self.id)
99116

100117
@classmethod
101-
def from_dict(cls, mail: 'OneSecMail', msg_info: dict[str, any]) -> 'OneSecMail.MessageInfo':
118+
def from_dict(cls, mail_instance: 'OneSecMail', msg_info: dict[str, any]) -> 'OneSecMail.MessageInfo':
119+
"""Create a MessageInfo from a raw api response"""
102120
return cls(
103-
_mail=mail,
121+
_mail_instance=mail_instance,
104122
id=msg_info['id'],
105123
from_addr=msg_info['from'],
106124
subject=msg_info['subject'],
@@ -109,28 +127,40 @@ def from_dict(cls, mail: 'OneSecMail', msg_info: dict[str, any]) -> 'OneSecMail.
109127

110128
@dataclass
111129
class Message:
130+
"""Email message"""
131+
112132
id: int
133+
"Message ID"
113134
from_addr: str
135+
"Sender email address"
114136
subject: str
137+
"Subject of the message"
115138
date_str: str
139+
"Date the message was received in format YYYY-MM-DD HH:MM:SS"
116140
body: str
141+
"Message body (html if exists, text otherwise)"
117142
text_body: str
143+
"Message body (text format)"
118144
html_body: str
119-
_mail: 'OneSecMail'
145+
"Message body (html format)"
146+
_mail_instance: 'OneSecMail'
120147
_attachments: list[dict[str, any]]
121148

122149
@property
123150
def date(self) -> datetime:
151+
"""Date the message was received"""
124152
return datetime.fromisoformat(self.date_str)
125153

126154
@property
127155
def attachments(self) -> list['OneSecMail.Attachment']:
128-
return [OneSecMail.Attachment.from_dict(self._mail, self.id, attachment) for attachment in self._attachments]
156+
"""List of attachments in the message (files)"""
157+
return [OneSecMail.Attachment.from_dict(self._mail_instance, self.id, attachment) for attachment in self._attachments]
129158

130159
@classmethod
131-
def from_dict(cls, mail: 'OneSecMail', msg: dict[str, any]) -> 'OneSecMail.Message':
160+
def from_dict(cls, mail_instance: 'OneSecMail', msg: dict[str, any]) -> 'OneSecMail.Message':
161+
"""Create a Message from a raw api response"""
132162
return cls(
133-
_mail=mail,
163+
_mail_instance=mail_instance,
134164
_attachments=msg['attachments'],
135165
id=msg['id'],
136166
from_addr=msg['from'],
@@ -143,20 +173,26 @@ def from_dict(cls, mail: 'OneSecMail', msg: dict[str, any]) -> 'OneSecMail.Messa
143173

144174
@dataclass
145175
class Attachment:
176+
"""Email attachment"""
177+
146178
filename: str
179+
"Name of the file of the attachment"
147180
content_type: str
181+
"MIME type of the attachment"
148182
size: int
149-
_mail: 'OneSecMail'
183+
"Size of the attachment in bytes"
184+
_mail_instance: 'OneSecMail'
150185
_message_id: int
151186

152187
def download(self) -> bytes:
153188
"""Download the attachment as bytes"""
154-
return self._mail.download_attachment(self._message_id, self.filename)
189+
return self._mail_instance.download_attachment(self._message_id, self.filename)
155190

156191
@classmethod
157-
def from_dict(cls, mail: 'OneSecMail', message_id: int, attachment: dict[str, any]) -> 'OneSecMail.Attachment':
192+
def from_dict(cls, mail_instance: 'OneSecMail', message_id: int, attachment: dict[str, any]) -> 'OneSecMail.Attachment':
193+
"""Create an Attachment from a raw api response"""
158194
return cls(
159-
_mail=mail,
195+
_mail_instance=mail_instance,
160196
_message_id=message_id,
161197
filename=attachment['filename'],
162198
content_type=attachment['contentType'],

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.