def _make_http_response(self, endpoint, request, specific_signer=None): body_params = request.get_body_params() if body_params: body = urlencode(body_params) request.set_content(body) request.set_content_type(format_type.APPLICATION_FORM) elif request.get_content( ) and "Content-Type" not in request.get_headers(): request.set_content_type(format_type.APPLICATION_OCTET_STREAM) method = request.get_method() signer = self._signer if specific_signer is None else specific_signer header, url = signer.sign(self.__region_id, request) if self.get_user_agent() is not None: header['User-Agent'] = self.get_user_agent() if header is None: header = {} header['x-sdk-client'] = 'python/2.0.0' protocol = request.get_protocol_type() response = HttpResponse(endpoint, url, method, header, protocol, request.get_content(), self._port, timeout=self._timeout) if body_params: body = urlencode(request.get_body_params()) response.set_content(body, "utf-8", format_type.APPLICATION_FORM) return response
def _make_http_response(self, endpoint, request, read_timeout, connect_timeout, specific_signer=None): body_params = request.get_body_params() if body_params: body = urlencode(body_params) request.set_content(body) request.set_content_type(format_type.APPLICATION_FORM) elif request.get_content( ) and "Content-Type" not in request.get_headers(): request.set_content_type(format_type.APPLICATION_OCTET_STREAM) method = request.get_method() if isinstance(request, CommonRequest): request.trans_to_acs_request() signer = self._signer if specific_signer is None else specific_signer header, url = signer.sign(self._region_id, request) base = self.user_agent_header() extra_agent = self.handle_extra_agent(request) default_agent = self.default_user_agent() user_agent = self.merge_user_agent(default_agent, extra_agent) for key, value in user_agent.items(): base += ' %s/%s' % (key, value) header['User-Agent'] = base header['x-sdk-client'] = 'python/2.0.0' protocol = request.get_protocol_type() response = HttpResponse(endpoint, url, method, header, protocol, request.get_content(), self._port, read_timeout=read_timeout, connect_timeout=connect_timeout, verify=self.get_verify()) if body_params: body = urlencode(request.get_body_params()) response.set_content(body, "utf-8", format_type.APPLICATION_FORM) return response
def get_url(uri_pattern, queries, path_parameters): url = "" url += replace_occupied_parameters(uri_pattern, path_parameters) if not url.endswith("?"): url += "?" url += urlencode(queries) if url.endswith("?"): url = url[0:(len(url) - 1)] return url
def get_signed_url(params, ak, secret, accept_format, method, body_params, signer=mac1): url_params = __refresh_sign_parameters(params, ak, accept_format, signer) sign_params = dict(url_params) sign_params.update(body_params) string_to_sign = __compose_string_to_sign(method, sign_params) signature = __get_signature(string_to_sign, secret, signer) url_params['Signature'] = signature url = '/?' + __pop_standard_urlencode(urlencode(url_params)) return url
def __compose_string_to_sign(method, queries): sorted_parameters = sorted(iteritems(queries), key=lambda queries: queries[0]) sorted_query_string = __pop_standard_urlencode( urlencode(sorted_parameters)) canonicalized_query_string = __pop_standard_urlencode( pathname2url(sorted_query_string)) string_to_sign = method + "&%2F&" + canonicalized_query_string return string_to_sign
def get_encode_str(params): """ transforms parameters to encoded string :param params: dict parameters :return: string """ list_params = sorted(iteritems(params), key=lambda d: d[0]) encode_str = urlencode(list_params) if sys.stdin.encoding is None: res = quote(encode_str.decode('cp936').encode('utf8'), '') else: res = quote( encode_str.decode( sys.stdin.encoding).encode('utf8'), '') res = res.replace("+", "%20") res = res.replace("*", "%2A") res = res.replace("%7E", "~") return res