Skip to content

Commit d06bde2

Browse files
Update FailedMessage type. Add MessageNotReceiveError
1 parent e3563a8 commit d06bde2

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from solapi.model.response.send_message_response import FailedMessage
2+
3+
4+
class MessageNotReceivedError(Exception):
5+
def __init__(self, failed_messages: list[FailedMessage]):
6+
self.failed_messages = failed_messages
7+
8+
def __str__(self):
9+
# TODO: i18n needed
10+
return "메시지 접수에 실패했습니다.\n자세한 내용은 MessageNotReceivedError의 failed_messages 프로퍼티를 참조해주세요."

solapi/message_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import datetime
22
from typing import Optional, Union
33

4+
from solapi.error.MessageNotReceiveError import MessageNotReceivedError
45
from solapi.lib.authenticator import AuthenticationParameter
56
from solapi.lib.fetcher import RequestMethod, default_fetcher
67
from solapi.lib.string_date_transfer import format_with_transfer
@@ -73,6 +74,6 @@ def send(
7374
failed_messages = deserialized_response.failed_message_list
7475
registered_failed_count = count.registered_failed
7576
if len(failed_messages) > 0 and count.total == registered_failed_count:
76-
raise ValueError("an error occurred")
77+
raise MessageNotReceivedError(failed_messages) from ValueError
7778

7879
return deserialized_response

solapi/model/response/send_message_response.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,21 @@ class MessageItem(BaseModel):
1414

1515
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
1616

17-
# TODO: Need to resolve FailedMessage from property deserialize issue.
1817
class FailedMessage(BaseModel):
19-
to: str
20-
from_: str = Field(..., serialization_alias="from", validation_alias="from")
18+
to: Optional[str]
19+
from_: Optional[str] = Field(..., serialization_alias="from", validation_alias="from")
2120
type: str
2221
status_message: str = Field(..., alias="statusMessage")
23-
country: str
22+
country: Optional[str]
2423
message_id: str = Field(..., alias="messageId")
2524
status_code: str = Field(..., alias="statusCode")
2625
account_id: str = Field(..., alias="accountId")
27-
custom_fields: Optional[dict[str, str]] = Field(default=None)
28-
29-
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
26+
custom_fields: Optional[dict[str, str]] = Field(default=None, alias="customFields")
3027

3128

3229
class SendMessageResponse(BaseModel):
3330
failed_message_list: Optional[list[FailedMessage]] = None
3431
group_info: GroupMessageResponse
35-
message_list: Optional[list[MessageItem]] = Field(default=None)
32+
message_list: Optional[list[MessageItem]] = None
3633

3734
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)

0 commit comments

Comments
 (0)