Skip to content

Commit 04dc3b9

Browse files
[Chore] Update files
1 parent 8491fd9 commit 04dc3b9

6 files changed

Lines changed: 56 additions & 90 deletions

File tree

pyproject.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,25 @@ description = "SOLAPI SDK for Python"
55
authors = [
66
{ name = "SOLAPI Team", email = "contact@solapi.com" }
77
]
8+
classifiers = [
9+
'Development Status :: 5 - Production/Stable',
10+
'Programming Language :: Python',
11+
'Programming Language :: Python :: Implementation :: CPython',
12+
'Programming Language :: Python :: Implementation :: PyPy',
13+
'Programming Language :: Python :: 3',
14+
'Programming Language :: Python :: 3 :: Only',
15+
'Programming Language :: Python :: 3.9',
16+
'Programming Language :: Python :: 3.10',
17+
'Programming Language :: Python :: 3.11',
18+
'Programming Language :: Python :: 3.12',
19+
'Programming Language :: Python :: 3.13',
20+
'Intended Audience :: Developers',
21+
'Intended Audience :: Information Technology',
22+
'License :: OSI Approved :: MIT License',
23+
'Operating System :: OS Independent',
24+
'Topic :: Software Development :: Libraries :: Python Modules',
25+
'Topic :: Internet',
26+
]
827
readme = "README.md"
928
requires-python = ">=3.9"
1029
dependencies = [

solapi/message_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from solapi.lib.authenticator import AuthenticationParameter
44
from solapi.lib.fetcher import RequestMethod, default_fetcher
55
from solapi.lib.string_date_transfer import format_with_transfer
6+
from solapi.model.message import Message
67
from solapi.requests.request_confiog import SendRequestConfig
78
from solapi.requests.send.send_request import (
8-
MessageParameter,
99
MultipleDetailMessageSendingRequest,
1010
)
1111
from solapi.responses.send.send_repsonse import DetailGroupMessageResponse
@@ -22,7 +22,7 @@ def __init__(self, api_key: str, api_secret: str):
2222
# TODO: Request도 pydantic 모델로 진행
2323
async def send(
2424
self,
25-
messages: list[MessageParameter] | MessageParameter,
25+
messages: list[Message] | Message,
2626
request_config: Optional[SendRequestConfig] = None,
2727
):
2828
payload = []

solapi/model/message.py

Lines changed: 28 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
from datetime import datetime
12
from enum import Enum
23
from typing import Any, Optional, TypedDict, Union
34

4-
from solapi.requests.send.send_request import MessageParameter
5+
from pydantic import BaseModel, Field
56

67

78
# 외부 파일 import 대신 타입 정의
@@ -57,80 +58,28 @@ class MessageType(str, Enum):
5758

5859

5960
# TODO: 생성자 만들 때 Request 딕셔너리가 아니라 Response 딕셔너리로 받아와야함.
60-
class Message:
61-
def __init__(self, parameter: MessageParameter):
62-
"""
63-
Message 클래스 초기화
61+
class Message(BaseModel):
62+
_to: str
63+
from__: Optional[str] = Field(None, alias="from")
64+
_text: Optional[str] = None
65+
_date_created: Optional[datetime] = None
66+
_date_updated: Optional[datetime] = None
67+
_group_id: Optional[str] = None
68+
_message_id: Optional[str] = None
69+
_image_id: Optional[str] = None
70+
_log: Optional[str] = None
71+
_type: Optional[str] = None
72+
_subject: Optional[str] = None
73+
# TODO: kakao options, rcs options 타이핑 해야 함
74+
_kakao_options: Optional[dict[str, Any]] = None
75+
_rcs_options: Optional[dict[str, Any]] = None
76+
_country: Optional[str] = None
77+
_auto_type_detect: Optional[bool] = None
78+
_status_code: Optional[str] = None
79+
_replacements: Optional[dict[str, Any]] = None
80+
_custom_fields: Optional[dict[str, Any]] = None
81+
_fax_options: Optional[dict[str, Any]] = None
6482

65-
Args:
66-
parameter: 메시지 파라미터 딕셔너리(json)
67-
"""
68-
# 수신번호
69-
self._to: Union[str, list[str]] = parameter["to"]
70-
71-
# 발신번호
72-
self._from_: Optional[str] = getattr(parameter, "from", None)
73-
74-
# 메시지 내용
75-
self._text: Optional[str] = getattr(parameter, "text", None)
76-
77-
# 메시지 생성일자
78-
self._date_created: Optional[str] = getattr(parameter, "dateCreated", None)
79-
80-
# 메시지 수정일자
81-
self._date_updated: Optional[str] = getattr(parameter, "dateUpdated", None)
82-
83-
# 메시지의 그룹 ID
84-
self._group_id: Optional[str] = getattr(parameter, "groupId", None)
85-
86-
# 해당 메시지의 ID
87-
self._message_id: Optional[str] = getattr(parameter, "messageId", None)
88-
89-
# MMS 전용 스토리지(이미지) ID
90-
self._image_id: Optional[str] = getattr(parameter, "imageId", None)
91-
92-
# 메시지 유형
93-
self._type: Optional[MessageType] = getattr(parameter, "type", None)
94-
95-
# 문자 제목(LMS, MMS 전용)
96-
self._subject: Optional[str] = getattr(parameter, "subject", None)
97-
98-
# 메시지 타입 감지 여부(비활성화 시 반드시 타입이 명시 되어야 함)
99-
self._auto_type_detect: Optional[bool] = getattr(
100-
parameter, "autoTypeDetect", None
101-
)
102-
103-
# 카카오 알림톡/친구톡을 위한 프로퍼티
104-
self._kakao_options: Optional[KakaoOption] = getattr(
105-
parameter, "kakaoOptions", None
106-
)
107-
108-
# RCS 메시지를 위한 프로퍼티
109-
self._rcs_options: Optional[RcsOption] = getattr(parameter, "rcsOptions", None)
110-
111-
# 해외 문자 발송을 위한 국가번호(예) "82", "1" 등)
112-
self._country: Optional[str] = getattr(parameter, "country", None)
113-
114-
# 메시지 로그
115-
self._log: Optional[list[dict[str, Any]]] = getattr(parameter, "log", None)
116-
117-
# 대체 텍스트
118-
self._replacements: Optional[list[dict[str, Any]]] = getattr(
119-
parameter, "replacements", None
120-
)
121-
122-
# 메시지 상태 코드
123-
# https://developers.solapi.com/references/message-status-codes
124-
self._status_code: Optional[str] = getattr(parameter, "status", None)
125-
126-
# 사용자를 위한 사용자만의 커스텀 값을 입력할 수 있는 필드
127-
# 단, 오브젝트 내 키 값 모두 문자열 형태로 입력되어야 합니다.
128-
self._custom_fields: Optional[dict[str, str]] = getattr(
129-
parameter, "customFields", None
130-
)
131-
132-
# 팩스 옵션
133-
self._fax_options: Optional[FileIds] = getattr(parameter, "faxOptions", None)
13483

13584
@property
13685
def to(self) -> Union[str, list[str]]:
@@ -142,11 +91,11 @@ def to(self, value: Union[str, list[str]]) -> None:
14291

14392
@property
14493
def from_(self) -> Optional[str]:
145-
return self._from_
94+
return self.__dict__.get("from")
14695

14796
@from_.setter
14897
def from_(self, value: Optional[str]) -> None:
149-
self._from_ = value
98+
self.from__ = value
15099

151100
@property
152101
def text(self) -> Optional[str]:
@@ -283,3 +232,6 @@ def fax_options(self) -> Optional[FileIds]:
283232
@fax_options.setter
284233
def fax_options(self, value: Optional[FileIds]) -> None:
285234
self._fax_options = value
235+
236+
class Config:
237+
populate_by_name = True

solapi/requests/send/send_request.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import platform
22
from typing import Any, TypedDict, Union
33

4-
from solapi.model.message import MessageType
4+
from solapi.model.message import Message, MessageType
55

66

77
class MessageParameterRequired(TypedDict):
@@ -76,4 +76,4 @@ class ShowMessageListType(TypedDict, total=False):
7676
class MultipleDetailMessageSendingRequest(
7777
TypedDict, DefaultMessageRequest, AppId, ShowMessageListType
7878
):
79-
messages: list[MessageParameter]
79+
messages: list[Message]

solapi/responses/common_response.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
from pydantic import BaseModel, Field
44

5-
from solapi.message_service import SolapiMessageService
6-
75

86
class GroupMessageResponse(BaseModel):
97
count: Any = Field(..., alias="count")
@@ -27,7 +25,7 @@ class GroupMessageResponse(BaseModel):
2725
date_completed: Optional[str] = Field(None, alias="dateCompleted")
2826

2927
class Config:
30-
allow_population_by_field_name = True
28+
populate_by_name = True
3129

3230
class Count(BaseModel):
3331
total: int = Field(..., alias="total")
@@ -41,7 +39,4 @@ class Count(BaseModel):
4139
registered_success: int = Field(..., alias="registeredSuccess")
4240

4341
class Config:
44-
allow_population_by_field_name = True
45-
46-
47-
message_service = SolapiMessageService()
42+
populate_by_name = True

solapi/responses/send/send_repsonse.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class FailedMessage(BaseModel):
1818
custom_fields: Optional[dict[str, str]] = Field(None, alias="customFields")
1919

2020
class Config:
21-
allow_population_by_field_name = True
21+
populate_by_name = True
2222

2323

2424
class MessageResponseItem(BaseModel):
@@ -28,7 +28,7 @@ class MessageResponseItem(BaseModel):
2828
status_message: str = Field(..., alias="statusMessage")
2929

3030
class Config:
31-
allow_population_by_field_name = True
31+
populate_by_name = True
3232

3333

3434
class DetailGroupMessageResponse(BaseModel):
@@ -37,4 +37,4 @@ class DetailGroupMessageResponse(BaseModel):
3737
message_list: Optional[list[MessageResponseItem]] = Field(None, alias="messageList")
3838

3939
class Config:
40-
allow_population_by_field_name = True
40+
populate_by_name = True

0 commit comments

Comments
 (0)