66sys .path .insert (0 , "../../" )
77
88from sdk .coolsms import Coolsms
9+ from sdk .exceptions import CoolsmsException
910from sdk .exceptions import CoolsmsSDKException
10-
11- #import sdk.coolsms
12-
13- #from coolsms import coolsms
11+ from sdk .exceptions import CoolsmsSystemException
12+ from sdk .exceptions import CoolsmsServerException
1413
1514# class Message
1615class Message :
17- #
16+ cool = None
17+
18+ # initialize
1819 def __init__ (self , api_key , api_secret ):
19- Coolsms (api_key , api_secret )
20+ self . cool = Coolsms (api_key , api_secret )
2021
2122 # access to send resource
2223 def send (self , params ):
@@ -37,156 +38,75 @@ def send(self, params):
3738 and more informations, visit 'http://www.coolsms.co.kr/SMS_API_v2#POSTsend'
3839
3940 Returns:
40- A JSON type string will be returned. On failure, thorw Exception
41+ A JSON type string will be returned. On failure, raise Exception
4142 """
42-
43- print ("GG" )
44- print (type (params ))
43+ # params type check
4544 if type (params ) is not dict :
46- raise CoolsmsSDKException ("params type is no dictionary" )
45+ raise CoolsmsSDKException ("parameter type is not dictionary" , 201 )
46+
47+ # require fields check
48+ if all (k in params for k in ("to" , "from" , "text" )) == False :
49+ raise CoolsmsSDKException ("parameter 'to', 'from', 'text' is required" , 201 )
4750
4851 for key , val in params .items ():
4952 print ("Code : {0}, Value : {1}" .format (key , val ))
53+
5054 if key == "text" and sys .version_info [0 ] == 2 :
5155 t_temp = text .decode ('utf-8' )
5256 text = t_temp .encode ('utf-8' )
5357 text = unicode (text , encoding = 'utf-8' )
5458 params ['text' ] = text
5559
56- if key == "to" and type (to ) == list :
60+ # convert list to a comma seperated string
61+ if key == "to" and val == list :
5762 to = ',' .join (to )
5863
64+ # message type check
65+ if key == "type" and val .lower () not in ['sms' , 'lms' , 'mms' , 'ata' ]:
66+ raise CoolsmsSDKException ("message type is not supported" , 201 )
5967
68+ # system info
6069 params ['os_platform' ] = platform .system ()
6170 params ['dev_lang' ] = "Python %s" % platform .python_version ()
6271 params ['sdk_version' ] = "sms-python %s" % Coolsms .sdk_version
63-
64- for key , val in params .items ():
65- print ("Code : {0}, Value : {1}" .format (key , val ))
6672
73+ # type이 mms일때 image file check
74+ files = {}
75+ if 'type' in params and params ['type' ] == 'mms' :
76+ if params ['image' ] is None :
77+ raise CoolsmsSDKException ('image file is required' )
6778
68- # convert list to a comma seperated string
69- """
70-
71- if app_version:
72- self.app_version = app_version
73-
74- # get authentication info.
75- timestamp, salt, signature = self.__get_signature__()
76-
77- fields = {'api_key': self.api_key,
78- 'timestamp': timestamp,
79- 'salt': salt,
80- 'signature': signature.hexdigest(),
81- 'type': mtype,
82- 'os_platform': os_platform,
83- 'dev_lang': dev_lang,
84- 'sdk_version': sdk_version,
85- 'app_version': self.app_version}
86-
87- if self.test:
88- fields['mode'] = 'test'
89- if self.srk:
90- fields['srk'] = self.srk
91- if to:
92- fields['to'] = to
93- if text:
94- fields['text'] = text
95- if sender:
96- fields['from'] = sender
97- if subject:
98- fields['subject'] = subject
99- if datetime:
100- fields['datetime'] = datetime
101- if extension:
102- fields['extension'] = extension
103- if country:
104- fields['country'] = country
105-
106- if image is None:
107- image = self.imgfile
108-
109- if mtype.lower() == 'mms':
110- if image is None:
111- self.__set_error__('image file path input required')
112- return False
11379 try :
114- with open(image, 'rb') as content_file:
80+ with open (params [ ' image' ] , 'rb' ) as content_file :
11581 content = content_file .read ()
116- except IOError as e:
117- self.__set_error__("I/O error({0}): {1}".format(e.errno, e.strerror))
118- return False
119- except:
120- self.__set_error__("Unknown error")
121- return False
82+ except Exception as e :
83+ raise CoolsmsSystemException (e , 399 )
84+
12285 files = {'image' : {'filename' : image , 'content' : content }}
123- else:
124- files = {}
12586
12687 # request post multipart-form
127- host = self.host + ':' + str(self.port)
128- selector = "/sms/%s/send" % self.api_version
129-
130- try:
131- status, reason, response = post_multipart(host, selector, fields, files)
132- except Exception as e:
133- print(e)
134- self.__set_error__("could not connect to server")
135- return False
136- if status != 200:
137- try:
138- err = json.loads(response)
139- except:
140- self.__set_error__("%u:%s" % (status, reason))
141- return False
142- self.__set_error__("%s:%s" % (err['code'], reason))
143- return False
144- return json.loads(response)
145- """
88+ response = self .cool .request_post_multipart ("send" , params , files )
89+ return response
14690
147- # access to sent resource
148- def status (self , page = 1 , count = 20 , s_rcpt = None , s_start = None , s_end = None , mid = None ):
149- params = dict ()
150- if page :
151- params ['page' ] = page
152- if count :
153- params ['count' ] = count
154- if s_rcpt :
155- params ['s_rcpt' ] = s_rcpt
156- if s_start :
157- params ['s_start' ] = s_start
158- if s_end :
159- params ['s_end' ] = s_end
160- if mid :
161- params ['mid' ] = mid
162- response , obj = self .request_get ('sent' , params )
163- return obj
91+ # access to statusresource
92+ def status (self , params = None ):
93+ response = self .cool .request_get ('status' , params )
94+ return response
16495
16596 # access to status resource
166- def line_status (self , count = 1 ):
167- params = dict ()
168- if count :
169- params ['count' ] = count
170- response , obj = self .request_get ('status' , params )
171- return obj
97+ def sent (self , params = None ):
98+ response = self .cool .request_get ('sent' , params )
99+ return response
172100
173101 # access to balance resource
174102 def balance (self ):
175- response , obj = self .request_get ('balance' )
176- return int ( obj [ 'cash' ]), int ( obj [ 'point' ])
103+ response = self . cool .request_get ('balance' )
104+ return response
177105
178106 # access to cancel resource
179- def cancel (self , mid = None , gid = None ):
180- if mid is None and gid is None :
181- return False
182-
183- params = dict ()
184- if mid :
185- params ['mid' ] = mid
186- if gid :
187- params ['gid' ] = gid
188-
189- response , obj = self .request_post ('cancel' , params )
190- if response .status == 200 :
191- return True
192- return False
107+ def cancel (self , params ):
108+ if 'message_id' not in params and 'group_id' not in params :
109+ raise CoolsmsSDKException ("message_id or group_id either one must be entered" , 202 )
110+
111+ response = self .cool .request_post ('cancel' , params )
112+ return response
0 commit comments