Skip to content

Commit 55894b8

Browse files
committed
[helpers] set default mimetype and filename when sending media
1 parent abf21c1 commit 55894b8

File tree

2 files changed

+28
-15
lines changed

2 files changed

+28
-15
lines changed

pywa/_helpers.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
Button,
3737
CallPermissionRequestButton,
3838
ButtonUrl,
39+
MessageType,
3940
)
4041
from pywa.types.others import InteractiveType
4142
from .types.media import Media
@@ -86,11 +87,24 @@ def resolve_buttons_param(
8687
return InteractiveType.BUTTON, {"buttons": tuple(b.to_dict() for b in buttons)}
8788

8889

90+
_header_format_to_message_type = {
91+
HeaderFormatType.IMAGE: MessageType.IMAGE,
92+
HeaderFormatType.VIDEO: MessageType.VIDEO,
93+
HeaderFormatType.DOCUMENT: MessageType.DOCUMENT,
94+
}
8995
_media_types_default_filenames = {
90-
"IMAGE": "pywa-image.jpg",
91-
"VIDEO": "pywa-video.mp4",
92-
"AUDIO": "pywa-audio.mp3",
93-
"STICKER": "pywa-sticker.webp",
96+
MessageType.IMAGE: "pywa-image.jpg",
97+
MessageType.VIDEO: "pywa-video.mp4",
98+
MessageType.AUDIO: "pywa-audio.mp3",
99+
MessageType.STICKER: "pywa-sticker.webp",
100+
MessageType.DOCUMENT: "pywa-document.pdf",
101+
}
102+
_media_types_default_mime_types = {
103+
MessageType.IMAGE: "image/jpeg",
104+
MessageType.VIDEO: "video/mp4",
105+
MessageType.AUDIO: "audio/mpeg",
106+
MessageType.STICKER: "image/webp",
107+
MessageType.DOCUMENT: "application/pdf",
94108
}
95109
_template_header_formats_filename = {
96110
HeaderFormatType.IMAGE: "pywa-template-header-image.jpg",
@@ -109,7 +123,7 @@ def resolve_media_param(
109123
media: str | Media | pathlib.Path | bytes | BinaryIO,
110124
mime_type: str | None,
111125
filename: str | None,
112-
media_type: str | None,
126+
media_type: MessageType | None,
113127
phone_id: str,
114128
) -> tuple[bool, str]:
115129
"""
@@ -126,8 +140,8 @@ def resolve_media_param(
126140
return False, wa.upload_media(
127141
phone_id=phone_id,
128142
media=media,
129-
mime_type=mime_type,
130-
filename=_media_types_default_filenames.get(media_type, filename),
143+
mime_type=mime_type or _media_types_default_mime_types.get(media_type),
144+
filename=filename or _media_types_default_filenames.get(media_type),
131145
).id
132146

133147

@@ -302,7 +316,7 @@ def _upload_params_media(
302316
media=media,
303317
mime_type=None,
304318
filename=None,
305-
media_type=first_param.format.value,
319+
media_type=_header_format_to_message_type[first_param.format],
306320
phone_id=sender,
307321
)
308322
for p in params:

pywa_async/_helpers.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
_media_types_default_filenames,
1515
_template_header_formats_filename,
1616
_template_header_formats_default_mime_types,
17+
_header_format_to_message_type,
18+
_media_types_default_mime_types,
1719
)
1820
from pywa.types.templates import (
1921
TemplateBaseComponent,
@@ -37,10 +39,7 @@ async def resolve_media_param(
3739
media: str | Media | pathlib.Path | bytes | BinaryIO,
3840
mime_type: str | None,
3941
filename: str | None,
40-
media_type: Literal[
41-
MessageType.IMAGE, MessageType.VIDEO, MessageType.AUDIO, MessageType.STICKER
42-
]
43-
| None,
42+
media_type: MessageType | None,
4443
phone_id: str,
4544
) -> tuple[bool, str]:
4645
"""
@@ -58,8 +57,8 @@ async def resolve_media_param(
5857
await wa.upload_media(
5958
phone_id=phone_id,
6059
media=media,
61-
mime_type=mime_type,
62-
filename=_media_types_default_filenames.get(media_type, filename),
60+
mime_type=mime_type or _media_types_default_mime_types.get(media_type),
61+
filename=filename or _media_types_default_filenames.get(media_type),
6362
)
6463
).id
6564

@@ -235,7 +234,7 @@ async def _upload_params_media(
235234
media=media,
236235
mime_type=None,
237236
filename=None,
238-
media_type=first_param.format.value,
237+
media_type=_header_format_to_message_type[first_param.format],
239238
phone_id=sender,
240239
)
241240
for p in params:

0 commit comments

Comments
 (0)