1
1
from typing import Union , Optional , List
2
2
3
- from pydantic import HttpUrl
3
+ from pydantic import HttpUrl , ValidationError
4
4
5
5
from .base import request , Token
6
- from .exceptions import ContactNotFound
6
+ from .exceptions import ContactNotFound , EskizException
7
7
from .types import User , Contact , CallbackUrl , Response
8
8
9
9
10
10
class EskizSMS :
11
- __slots__ = ("token" , "_user" )
11
+ __slots__ = (
12
+ "token" ,
13
+ "_user" ,
14
+ "callback_url"
15
+ )
12
16
13
17
def __init__ (
14
18
self ,
15
19
email : str ,
16
20
password : str ,
17
- save_token = False ,
18
- env_file_path = None ,
21
+ callback_url : Optional [Union [str , HttpUrl ]] = None ,
22
+ save_token : bool = False ,
23
+ env_file_path : str = None ,
19
24
auto_update_token = True
20
25
):
21
26
self .token = Token (
@@ -25,6 +30,12 @@ def __init__(
25
30
auto_update = auto_update_token
26
31
)
27
32
self ._user : Optional [User ] = None
33
+ self .callback_url = callback_url
34
+ if self .callback_url :
35
+ try :
36
+ CallbackUrl (url = self .callback_url )
37
+ except ValidationError :
38
+ raise EskizException ("callback_url is invalid" )
28
39
29
40
@property
30
41
def user (self ) -> Optional [User ]:
@@ -93,9 +104,13 @@ def send_sms(self, mobile_phone: str, message: str, from_whom: str = '4546',
93
104
"message" : message ,
94
105
"from_whom" : from_whom ,
95
106
}
96
- if callback_url is not None :
97
- CallbackUrl (url = callback_url )
98
- payload ['callback_url' ] = callback_url
107
+ callback_url = callback_url or self .callback_url
108
+ if callback_url :
109
+ try :
110
+ CallbackUrl (url = callback_url )
111
+ payload ['callback_url' ] = callback_url
112
+ except ValidationError :
113
+ raise EskizException ('callback_url is invalid' )
99
114
return Response (** request .post ("/message/sms/send" , token = self .token , payload = payload ))
100
115
101
116
def send_global_sms (self , mobile_phone : str , message : str , country_code : str ,
@@ -115,9 +130,13 @@ def send_global_sms(self, mobile_phone: str, message: str, country_code: str,
115
130
"country_code" : country_code ,
116
131
"unicode" : unicode
117
132
}
118
- if callback_url is not None :
119
- CallbackUrl (url = callback_url )
120
- payload ["callback_url" ] = callback_url
133
+ callback_url = callback_url or self .callback_url
134
+ if callback_url :
135
+ try :
136
+ CallbackUrl (url = callback_url )
137
+ payload ['callback_url' ] = callback_url
138
+ except ValidationError :
139
+ raise EskizException ('callback_url is invalid' )
121
140
return Response (** request .post ("/message/sms/send-global" , token = self .token , payload = payload ))
122
141
123
142
def send_batch (self , * , messages : List [dict ], from_whom : str = "4546" , dispatch_id : int ) -> Response :
0 commit comments