def send(self, params): # params type check if type(params) is not dict: raise CoolsmsSDKException("parameter type is not dictionary", 201) params = self.cool.check_send_data(params) # system info params['os_platform'] = platform.system() params['dev_lang'] = "Python %s" % platform.python_version() params['sdk_version'] = "sms-python %s" % Coolsms.sdk_version # type이 mms일때 image file check files = {} if 'type' in params and params['type'] == 'mms': if 'image' not in params: raise CoolsmsSDKException('image file is required', 201) try: with open(params['image'], 'rb') as content_file: content = base64.b64encode(content_file.read()) content = content.decode() except Exception as e: raise CoolsmsSystemException(e, 399) files = { 'image': { 'filename': params['image'], 'content': content } } params['image_encoding'] = 'base64' # request post multipart-form response = self.cool.request_post_multipart("send", params, files) return response
def request(self, resource, params, method="GET"): params = dict() params = self.set_base_params(params) params_str = urlencode(params) headers = { "Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain", "User-Agent": "sms-python" } try: # use_http_connection 이 True 라면 http 통신을 한다 if self.use_http_connection == True: conn = HTTPConnection(self.host) else: conn = HTTPSConnection(self.host, self.port) # request method 에 따라 다르게 요청 if method == "GET": conn.request( "GET", "/%s/%s/%s?" % (self.api_name, self.api_version, resource) + params_str, None, headers) else: conn.request( "POST", "/%s/%s/%s" % (self.api_name, self.api_version, resource), params_str, headers) response = conn.getresponse() data = response.read().decode() conn.close() except Exception as e: conn.close() raise CoolsmsSystemException(e, 399) # https status code is not 200, raise Exception if response.status != 200: error_msg = response.reason if data: error_msg = data raise CoolsmsServerException(error_msg, response.status) obj = None if data: obj = json.loads(data) return obj
def request_post_multipart(self, resource, params, files): host = self.host + ':' + str(self.port) selector = "/%s/%s/%s" % (self.api_name, self.api_version, resource) params = self.set_base_params(params) content_type, body = self.encode_multipart_formdata(params, files) try: # use_http_connection 이 True 라면 http 통신을 한다 if self.use_http_connection == True: conn = HTTPConnection(self.host) else: conn = HTTPSConnection(self.host, self.port) conn.putrequest('POST', selector) conn.putheader('Content-type', content_type) conn.putheader('Content-length', str(len(body))) conn.putheader('User-Agent', 'sms-python') conn.endheaders() conn.send(body) response = conn.getresponse() data = response.read().decode() conn.close() except Exception as e: conn.close() raise CoolsmsSystemException(e, 399) # https status code is not 200, raise Exception if response.status != 200: error_msg = response.reason if data: error_msg = data raise CoolsmsServerException(error_msg, response.status) # response data parsing obj = None if data: obj = json.loads(data) return obj
def upload_image(self, image): if image == None: raise CoolsmsSDKException("'image' is required", 201); params = dict() params = {'image':image} params['image_encoding'] = 'base64' files = {} try: with open(image, 'rb') as content_file: content = base64.b64encode(content_file.read()) content = content.decode() except Exception as e: raise CoolsmsSystemException(e, 399) files = {'image': {'filename': image, 'content': content}} response = self.cool.request_post_multipart("upload_image", params, files) return response