Skip to content
This repository was archived by the owner on Feb 28, 2025. It is now read-only.

Commit e82bc2e

Browse files
committed
group message resource 구현
1 parent 85ca629 commit e82bc2e

5 files changed

Lines changed: 211 additions & 29 deletions

File tree

3.84 KB
Binary file not shown.
9 Bytes
Binary file not shown.

sdk/api/group_message.py

Lines changed: 176 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,195 @@
22
# -*- coding: utf8 -*-
33

44
import sys
5+
import platform
6+
import json
57
sys.path.insert(0, "../../")
68

79
from sdk.coolsms import Coolsms
8-
from sdk import exceptions
10+
from sdk.exceptions import CoolsmsException
11+
from sdk.exceptions import CoolsmsSDKException
12+
from sdk.exceptions import CoolsmsSystemException
13+
from sdk.exceptions import CoolsmsServerException
914

10-
# class GroupMessage
15+
## @class GroupMessage
16+
# @brief management group message, using Rest API
1117
class GroupMessage:
12-
#
18+
# Coolsms Object
19+
cool = None
20+
21+
## @brief initialize
22+
# @param string api_key [required]
23+
# @param string api_secret [required]
1324
def __init__(self, api_key, api_secret):
14-
Coolsms(api_key, api_secret)
25+
self.cool = Coolsms(api_key, api_secret)
1526

16-
#
27+
## @brief create create group ( HTTP Method GET )
28+
# @param dictionary params {
29+
# @param string charset [optional]
30+
# @param string srk [optional]
31+
# @param string mode [optional]
32+
# @param string delay [optional]
33+
# @param boolean force_sms [optional]
34+
# @param string os_platform [optional]
35+
# @param string dev_lang [optional]
36+
# @param string sdk_version [optional]
37+
# @param string app_version [optional] }
38+
# @return JSONObject
1739
def create_group(self):
18-
return
40+
response = self.cool.request_get('new_group')
41+
42+
return response
1943

20-
#
44+
## @brief get group list ( HTTP Method GET )
45+
# @param None
46+
# @return JSONArray
2147
def get_group_list(self):
22-
return
48+
response = self.cool.request_get('group_list')
49+
50+
return response
51+
52+
## @brief delete groups ( HTTP Method POST )
53+
# @param string group_ids [required]
54+
# @return JSONobject
55+
def delete_groups(self, group_ids):
56+
if group_ids == None:
57+
raise CoolsmsSDKException("parameter 'group_ids' is required", 201)
58+
59+
params = {'group_ids':group_ids}
60+
response = self.cool.request_post('delete_groups', params)
61+
62+
return response
63+
64+
## @brief get group info ( HTTP Method GET )
65+
# @param string group_id [required]
66+
# @return JSONObject
67+
def get_group_info(self, group_id):
68+
if group_id == None:
69+
raise CoolsmsSDKException("parameter 'group_id' is required", 201)
70+
71+
resource = "groups/%s" % group_id
72+
response = self.cool.request_get(resource)
73+
74+
return response
75+
76+
## @brief add message to group ( HTTP Method POST )
77+
# @param dictionary params {
78+
# @param string group_id [required]
79+
# @param string to [required]
80+
# @param string from [required]
81+
# @param string text [required]
82+
# @param string image_id [optional]
83+
# @param string refname [optional]
84+
# @param string country [optional]
85+
# @param string datetime [optional]
86+
# @param string subject [optional]
87+
# @param integer delay [optional] }
88+
# @return JSONObject
89+
def add_messages(self, params):
90+
# params type check
91+
if type(params) is not dict:
92+
raise CoolsmsSDKException("parameter type is not dictionary", 201)
93+
94+
# require fields check
95+
if "group_id" not in params:
96+
raise CoolsmsSDKException("parameter 'group_id' is required", 201)
97+
98+
params = Coolsms.check_send_data(params)
99+
100+
# system info
101+
params['os_platform'] = platform.system()
102+
params['dev_lang'] = "Python %s" % platform.python_version()
103+
params['sdk_version'] = "sms-python %s" % Coolsms.sdk_version
104+
105+
# request post
106+
resource = "groups/%s/add_messages" % params['group_id']
107+
response = self.cool.request_post(resource, params)
108+
109+
return response
110+
111+
## @brief add json type message to group ( HTTP Method POST )
112+
# @param string group_id [required]
113+
# @param JSONArray messages [required] [{
114+
# @param string to [required]
115+
# @param string from [required]
116+
# @param string text [required]
117+
# @param string image_id [optional]
118+
# @param string refname [optional]
119+
# @param string country [optional]
120+
# @param string datetime [optional]
121+
# @param string subject [optional]
122+
# @param integer delay [optional] }]
123+
# @return JSONObject
124+
def add_messages_json(self, group_id, messages):
125+
# require fields check
126+
if group_id == None or messages == None:
127+
raise CoolsmsSDKException("parameter 'group_id', 'messages' are required", 201)
128+
129+
messages = json.loads(messages)
130+
131+
for data in messages:
132+
data = Coolsms.check_send_data(data)
133+
134+
# messages setting
135+
params = dict()
136+
params['messages'] = json.dumps(messages)
137+
138+
# system info
139+
params['os_platform'] = platform.system()
140+
params['dev_lang'] = "Python %s" % platform.python_version()
141+
params['sdk_version'] = "sms-python %s" % Coolsms.sdk_version
142+
143+
# request post
144+
resource = "groups/%s/add_messages.json" % group_id
145+
response = self.cool.request_post(resource, params)
146+
147+
return response
148+
149+
## @brief get message list ( HTTP Method GET )
150+
# @param dictionary params {
151+
# @param string group_id [required]
152+
# @param integer offset [optional]
153+
# @param integer limit [optional] }
154+
# @return JSONObject
155+
def get_message_list(self, params):
156+
# require fields check
157+
if "group_id" not in params:
158+
raise CoolsmsSDKException("parameter 'group_id' is required", 201)
159+
160+
# request post
161+
resource = "groups/%s/message_list" % params['group_id']
162+
response = self.cool.request_get(resource, params)
163+
164+
return response
165+
166+
## @brief delete message from group ( HTTP Method POST )
167+
# @param string group_id [required]
168+
# @param string message_ids [required]
169+
# @return JSONObject
170+
def delete_messages(self, group_id, message_ids):
171+
# require fields check
172+
if group_id == None or message_ids == None:
173+
raise CoolsmsSDKException("parameter 'group_id', 'message_ids' are required", 201)
23174

24-
#
25-
def delete_groups(self):
26-
return
175+
params = dict()
176+
params['message_ids'] = message_ids
27177

28-
#
29-
def get_group_info(self):
30-
return
178+
# request post
179+
resource = "groups/%s/delete_messages" % group_id
180+
response = self.cool.request_post(resource, params)
31181

32-
#
33-
def add_messages(self):
34-
return
182+
return response
35183

36-
#
37-
def add_messages_json(self):
38-
return
184+
## @brief send group message ( HTTP Method POST )
185+
# @param string group_id [required]
186+
# @return JSONObject
187+
def send(self, group_id):
188+
# require filed check
189+
if group_id == None:
190+
raise CoolsmsSDKException("parameter 'group_id' is required", 201)
39191

40-
#
41-
def delete_messages(self):
42-
return
192+
# request post
193+
resource = "groups/%s/send" % group_id
194+
response = self.cool.request_post(resource)
43195

44-
#
45-
def send(self):
46-
return
196+
return response

sdk/api/message.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,13 @@ def send(self, params):
5252

5353
# require fields check
5454
if all (k in params for k in ("to", "from", "text")) == False:
55-
raise CoolsmsSDKException("parameter 'to', 'from', 'text' is required", 201)
55+
raise CoolsmsSDKException("parameter 'to', 'from', 'text' are required", 201)
5656

5757
for key, val in params.items():
5858
print("Code : {0}, Value : {1}".format(key, val))
5959

6060
if key == "text" and sys.version_info[0] == 2:
61+
text = val
6162
t_temp = text.decode('utf-8')
6263
text = t_temp.encode('utf-8')
6364
text = unicode(text, encoding='utf-8')
@@ -120,7 +121,7 @@ def balance(self):
120121
# @return JSONObject
121122
def cancel(self, params):
122123
if 'message_id' not in params and 'group_id' not in params:
123-
raise CoolsmsSDKException("message_id or group_id either one must be entered", 202)
124+
raise CoolsmsSDKException("message_id or group_id either one must be entered", 201)
124125

125126
response = self.cool.request_post('cancel', params)
126127
return response

sdk/coolsms.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
import platform
1111

1212
from hashlib import md5
13+
from sdk.exceptions import CoolsmsException
14+
from sdk.exceptions import CoolsmsSDKException
15+
from sdk.exceptions import CoolsmsSystemException
1316
from sdk.exceptions import CoolsmsServerException
1417

1518
# sys.version_info.major is available in python version 2.7
@@ -82,7 +85,7 @@ def request_get(self, resource, params=None):
8285
params = dict()
8386

8487
params = self.set_base_params(params)
85-
params_str = urlencode(base_params)
88+
params_str = urlencode(params)
8689
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain",
8790
"User-Agent": "sms-python"}
8891
conn = HTTPSConnection(self.host, self.port)
@@ -204,3 +207,31 @@ def set_base_params(self, params):
204207
'signature': signature.hexdigest()}
205208
params.update(base_params)
206209
return params
210+
211+
## @brief check send data
212+
# @param dictionary params [required]
213+
# @return dictionary params
214+
def check_send_data(params):
215+
# require fields check
216+
if all (k in params for k in ("to", "from", "text")) == False:
217+
raise CoolsmsSDKException("parameter 'to', 'from', 'text' are required", 201)
218+
219+
for key, val in params.items():
220+
print("Code : {0}, Value : {1}".format(key, val))
221+
222+
if key == "text" and sys.version_info[0] == 2:
223+
text = val
224+
t_temp = text.decode('utf-8')
225+
text = t_temp.encode('utf-8')
226+
text = unicode(text, encoding='utf-8')
227+
params['text'] = text
228+
229+
# convert list to a comma seperated string
230+
if key == "to" and val == list:
231+
params['to'] = ','.join(to)
232+
233+
# message type check
234+
if key == "type" and val.lower() not in ['sms', 'lms', 'mms', 'ata']:
235+
raise CoolsmsSDKException("message type is not supported", 201)
236+
237+
return params

0 commit comments

Comments
 (0)