def test_bug_with_17661113(self): request = CommonRequest() request.set_domain("nlp.cn-shanghai.aliyuncs.com") request.set_uri_pattern("/nlp/api/reviewanalysis/ecommerce") request.set_method(method_type.POST) request.add_header("x-acs-signature-method", "HMAC-SHA1") request.add_header("x-acs-signature-nonce", uuid.uuid4().hex) request.add_header("x-acs-signature-version", "1.0") content = '{"text":"裙子穿着很美哦,上身效果也不错,是纯棉的料子,穿着也很舒服。", ' \ '"cate":"clothing"}' request.set_content_type("application/json;chrset=utf-8") request.set_accept_format("application/json;chrset=utf-8") if sys.version_info[0] == 2: request.set_content(content) else: request.set_content(content.encode('utf-8')) request.set_version('2018-04-08') request.set_action_name("None") # We have 2 possible situations here: NLP purchased or NLP purchased # The test case should be passed in both situations. try: response = self.client.do_action_with_exception(request) self.assertTrue(response) except ServerException as e: self.assertEqual("InvalidApi.NotPurchase", e.error_code) self.assertEqual("Specified api is not purchase", e.get_error_msg())
def test_common_request_get_signed_header(self, mock_get_rfc_2616_date): r = CommonRequest() r.set_version("version") r.set_uri_pattern('/users/[userid]') r.set_path_params({"userid": "jacksontian"}) r.set_product('product') r.trans_to_acs_request() self.assertEqual(r.get_url("regionid", "accesskeyid", "secret"), "/users/jacksontian") self.assertEqual(r.get_style(), "ROA") mock_get_rfc_2616_date.return_value = "2018-12-04T03:25:29Z" headers = r.get_signed_header("regionid", "accesskeyid", "secret") mock_get_rfc_2616_date.assert_called_once_with() self.assertDictEqual( headers, { 'Accept': 'application/octet-stream', 'Authorization': 'acs accesskeyid:Lq1u0OzLW/uqLQswxwhne97Umlw=', 'Date': '2018-12-04T03:25:29Z', 'x-acs-region-id': 'regionid', 'x-acs-signature-method': 'HMAC-SHA1', 'x-acs-signature-version': '1.0', 'x-acs-version': 'version', 'x-sdk-invoke-type': 'common' })
def deploy(warurl): request = CommonRequest() request.set_accept_format('json') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_domain(endpoint) request.set_version('2017-08-01') packageversion = strftime("%Y%m%d%H%M%S", gmtime()) request.add_query_param('RegionId', region) request.add_query_param('AppId', appid) request.add_query_param('PackageVersion', packageversion) request.add_query_param('DeployType', 'url') request.add_query_param('WarUrl', warurl) request.add_query_param('GroupId', 'all') #request.set_uri_pattern('/pop/v5/app/app_status') request.set_uri_pattern('/pop/v5/changeorder/co_deploy') body = '''''' response = '' request.set_content(body) response = client.do_action(request) # python2: print(response)
def test_trans_to_acs_request_to_roa(self): r = CommonRequest() # signed_header with self.assertRaises(ClientException) as ex: r.trans_to_acs_request() self.assertEqual(ex.exception.error_code, "SDK.InvalidParams") self.assertEqual( ex.exception.message, "common params [version] is required, cannot be empty") r.set_version("version") with self.assertRaises(ClientException) as ex: r.trans_to_acs_request() self.assertEqual(ex.exception.error_code, "SDK.InvalidParams") self.assertEqual( ex.exception.message, "At least one of [action] and [uri_pattern] has a value") r.set_uri_pattern("/users/:userid") with self.assertRaises(ClientException) as ex: r.trans_to_acs_request() self.assertEqual(ex.exception.error_code, "SDK.InvalidParams") self.assertEqual( ex.exception.message, "At least one of [domain] and [product_name] has a value") r.set_product('product') r.trans_to_acs_request() self.assertEqual(r.get_style(), "ROA")
def test_common_request_get_url(self): r = CommonRequest() r.set_version("version") r.set_uri_pattern('/users/[userid]') r.set_path_params({"userid": "jacksontian"}) r.set_product('product') r.trans_to_acs_request() self.assertEqual(r.get_style(), "ROA") url = r.get_url("regionid", "accesskeyid", "secret") self.assertEqual(url, "/users/jacksontian")
def stopapp(appid): #print(appid) client = AcsClient(aukey, ausecret, areaname) request = CommonRequest() request.set_accept_format('json') request.set_method('POST') request.set_protocol_type('https') request.set_domain("edas.cn-hangzhou.aliyuncs.com") #request.set_domain(areadomain)报错 request.set_version('2017-08-01') request.add_query_param("RegionId", areaname) request.add_query_param('AppId', appid) request.set_uri_pattern('/pop/v5/changeorder/co_stop') response = client.do_action(request) print(str(response, encoding='utf-8'))
def test_roa_form_with_setup(self): request = CommonRequest() request.set_domain('ft.aliyuncs.com') request.set_version('2016-01-02') request.set_action_name('TestRoaApi') request.set_uri_pattern('/web/cloudapi') request.set_method('POST') request.add_header('HeaderParam', 'headerValue') request.add_query_param('QueryParam', 'queryValue') request.add_body_params('BodyParam', 'bodyValue') body = self.acs_client.do_action_with_exception(request) assert body response = json.loads(body) assert response assert response.get("Params").get("QueryParam") == 'queryValue' assert response.get("Headers").get("HeaderParam") == 'headerValue' assert response.get("Params").get("BodyParam") == 'bodyValue'
def test_resolve_endpoint(self): region_provider.modify_point('Ft', 'cn-hangzhou', 'ft.aliyuncs.com') request = CommonRequest() request.set_product('Ft') request.set_version('2016-01-02') request.set_action_name('TestRoaApi') request.set_uri_pattern('/web/cloudapi') request.set_method('POST') request.add_header('HeaderParam', 'headerValue') request.add_query_param('QueryParam', 'queryValue') request.add_body_params('BodyParam', 'bodyValue') body = self.acs_client.do_action_with_exception(request) assert body response = json.loads(body) assert response assert response.get("Params").get("QueryParam") == 'queryValue' assert response.get("Headers").get("HeaderParam") == 'headerValue' assert response.get("Params").get("BodyParam") == 'bodyValue'
def list_container_registry_regions(self): """ list the available regions in the alibaba :return: """ try: conn = client.AcsClient( ak=self.access_key, secret=self.secret_key ) request = CommonRequest() request.set_accept_format('json') request.set_domain('cr.cn-hangzhou.aliyuncs.com') request.set_method('GET') request.set_protocol_type('https') request.set_version('2016-06-07') request.set_action_name('DescribeRegions') request.add_header('Content-Type', 'application/json') request.set_uri_pattern('/regions') body = '''{}''' request.set_content(body.encode('utf-8')) regions = conn.do_action_with_exception(request) regions = json.loads(regions) result = regions.get('data').get('regions') region_list = [] # skip regions {'cn-qingdao', 'cn-huhehaote', 'cn-chengdu'} because container service not supported in # these regions for region in result: # if 'wulanchabu' in str(region.get('regionId')) or 'cn-heyuan' in str( # region.get('regionId')) or 'cn-chengdu' in str(region.get('regionId')): # continue region_list.append(str(region.get('regionId'))) return True, region_list except Exception as e: return False, e.message
def create(self): request = CommonRequest() request.set_accept_format('json') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_domain('cs.cn-beijing.aliyuncs.com') request.set_version('2015-12-15') request.add_query_param('RegionId', "cn-beijing") request.add_header('Content-Type', 'application/json') request.set_uri_pattern( '/api/v2/clusters/c970e25147efc4f9e98b4b1b73c9822a7') body = { "count": self.count, "worker_data_disk": self.worker_data_disk, "key_pair": self.key_pair, "worker_instance_types": ["ecs.g5.6xlarge"], "worker_instance_charge_type": "PostPaid", "vswitch_ids": ["vsw-2ze7mbfg62o3dqfv6rbkz"], "tags": [{ "key": self.tag_key, "value": self.tag_value }] } request.set_content(json.dumps(body)) client = AcsClient(self.access_id, self.access_secret, 'cn-beijing') try: response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) except ServerException as e: print(e) except ClientException as e: print(e)
import base64 import os from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient(os.getenv("ACCESSKEYID"), os.getenv("ACCESSKEYSECRET"), 'ap-northeast-1') request = CommonRequest() request.set_domain('imagesearch.ap-northeast-1.aliyuncs.com') request.set_version('2018-01-20') request.set_method('POST') request.set_protocol_type('HTTPS') request.set_uri_pattern('/item/delete') request.add_query_param('instanceName', 'imagesearch001') params = { 'item_id': '1000', } start_offset = 0; content = "" meta = "" for k in params: meta = "{}{},{},{}#".format(meta,k,start_offset,start_offset+len(params[k])) start_offset += len(params[k]) content = "{}{}".format(content,params[k]) body = meta[:-1] + "^" + content request.set_content(body)
def test_common_request(self): r = CommonRequest() # accept format self.assertIsNone(r.get_accept_format()) r.set_accept_format('json') self.assertEqual(r.get_accept_format(), "json") # action name self.assertEqual(r.get_action_name(), None) r.set_action_name('new action name') self.assertEqual(r.get_action_name(), "new action name") # body params self.assertDictEqual(r.get_body_params(), {}) r.set_body_params({'key': 'value'}) self.assertDictEqual(r.get_body_params(), {'key': 'value'}) r.add_body_params("key2", "value2") self.assertDictEqual(r.get_body_params(), { 'key': 'value', 'key2': 'value2' }) # content self.assertIsNone(r.get_content()) r.set_content("content") self.assertEqual(r.get_content(), "content") # headers self.assertDictEqual(r.get_headers(), {'x-sdk-invoke-type': 'common'}) r.set_headers({}) self.assertDictEqual(r.get_headers(), {}) r.add_header("key", "value") self.assertDictEqual(r.get_headers(), {"key": "value"}) # location endpoint type self.assertEqual(r.get_location_endpoint_type(), 'openAPI') # no set_location_endpoint_type ?? # location_service_code self.assertEqual(r.get_location_service_code(), None) r.set_location_service_code('new service code') self.assertEqual(r.get_location_service_code(), 'new service code') # method self.assertEqual(r.get_method(), 'GET') r.set_method('POST') self.assertEqual(r.get_method(), 'POST') # product self.assertEqual(r.get_product(), None) r.set_product('new-product') self.assertEqual(r.get_product(), 'new-product') # protocol_type self.assertEqual(r.get_protocol_type(), "http") r.set_protocol_type('https') self.assertEqual(r.get_protocol_type(), "https") # query params self.assertDictEqual(r.get_query_params(), {}) r.set_query_params({'key': 'value'}) self.assertDictEqual(r.get_query_params(), {'key': 'value'}) r.add_query_param("key2", "value2") self.assertDictEqual(r.get_query_params(), { 'key': 'value', "key2": "value2" }) # uri params self.assertEqual(r.get_uri_params(), None) r.set_uri_params({'user': "******"}) self.assertDictEqual(r.get_uri_params(), {'user': '******'}) # uri pattern self.assertEqual(r.get_uri_pattern(), None) r.set_uri_pattern('/users/:userid') self.assertEqual(r.get_uri_pattern(), '/users/:userid') # url # version self.assertEqual(r.get_version(), None) r.set_version('2014-10-18') self.assertEqual(r.get_version(), "2014-10-18") # user-agent self.assertEqual(r.get_headers().get('User-Agent'), None) r.set_user_agent("user-agent") self.assertEqual(r.get_headers().get('User-Agent'), "user-agent") # content-type self.assertEqual(r.get_headers().get('Content-Type'), None) r.set_content_type("application/json") self.assertEqual(r.get_headers().get('Content-Type'), "application/json") # domain self.assertEqual(r.get_domain(), None) r.set_domain("new-domain") self.assertEqual(r.get_domain(), "new-domain") # path_params self.assertEqual(r.get_path_params(), None) r.add_path_param("userid", "jacksontian") r.add_path_param("repo", "snow") self.assertEqual(r.get_path_params(), { "userid": "jacksontian", "repo": "snow" }) r.set_path_params({"userid": "linatian"}) self.assertEqual(r.get_path_params(), {"userid": "linatian"})
# coding: utf-8 # @Time : 2019/10/15 14:46 # @Author : 李志伟 # @Email : [email protected] import uuid from urllib.parse import urlencode from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient('LTAI4FcqpUcSu5Ytbt9FTvPg', 'AX38rHYJgtWVwjAxyZjx0oIGXm11nW', 'cn-hangzhou') request = CommonRequest() request.set_domain("automl.cn-hangzhou.aliyuncs.com") request.set_uri_pattern("/api/automl/predict") request.set_version('2019-05-29') request.set_method('POST') request.add_header("x-acs-signature-method", "HMAC-SHA1") request.add_header("x-acs-signature-nonce", uuid.uuid4().hex) request.add_header("x-acs-signature-version", "1.0") request.set_content_type("application/x-www-form-urlencoded") request.set_accept_format("application/json;chrset=utf-8") new_content = { 'ModelId': 1408, 'Content': 'Delegates Urge Cleric to Pull Out of Najaf', 'Version': 'V1' } request.set_content(urlencode(new_content)) response = client.do_action_with_exception(request) print(str(response, encoding='utf-8'))
scale_nodes_list = [] client = AcsClient(setting.ACCESS_ID, setting.ACCESS_SECRET, 'cn-beijing') request = CommonRequest() request.set_accept_format('json') request.set_method('GET') request.set_protocol_type('https') # https | http request.set_domain('cs.cn-beijing.aliyuncs.com') request.set_version('2015-12-15') request.add_query_param('RegionId', "cn-beijing") request.add_query_param('pageSize', "100") request.add_query_param('pageNumber', "1") request.add_header('Content-Type', 'application/json') request.set_uri_pattern('/clusters/c970e25147efc4f9e98b4b1b73c9822a7/nodes') body = '''{}''' request.set_content(json.dumps(body)) try: response = client.do_action_with_exception(request) str_instace_dict = (str(response, encoding='utf-8')) json_instance_dict = json.loads(str_instace_dict) for instance in json_instance_dict['nodes']: # print(instance) if instance['instance_charge_type'] == "PostPaid" and instance[ 'instance_type_family'] == "ecs.g5": if str(datetime.date.today()) in instance['creation_time']: scale_nodes_list.append(instance['node_name'])
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest img_file = 'img.jpg' b64_img = base64.b64encode(open(img_file, 'rb').read()).decode('ascii') b64_filename = base64.b64encode(img_file.encode('latin-1')).decode('ascii') client = AcsClient(os.getenv("ACCESSKEYID"), os.getenv("ACCESSKEYSECRET"), 'ap-northeast-1') request = CommonRequest() request.set_domain('imagesearch.ap-northeast-1.aliyuncs.com') request.set_version('2018-01-20') request.set_method('POST') request.set_protocol_type('HTTPS') request.set_uri_pattern('/item/add') request.add_query_param('instanceName', 'imagesearch001') params = { 'item_id': '1000', 'cat_id': '0', 'cust_content': '{k:v}', 'pic_list': b64_filename } params[b64_filename] = b64_img start_offset = 0 content = "" meta = "" for k in params:
# -*- coding: utf8 -*- import uuid from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest from aliyunsdkcore.http import method_type import json # 创建AcsClient实例 client = AcsClient('LTAIby5D2cxpu0zG', 'EGjFkYGV1o2Q2gRYwBM7DiryBSB96T', 'cn-shanghai') request = CommonRequest() request.set_domain("nlp.cn-shanghai.aliyuncs.com") # 必须设置domain request.set_uri_pattern("/nlp/api/textstructure/ecommerce") #设置所要请求的API路径 request.set_method(method_type.POST) # 设置请求方式,目前只支持POST request.add_header("x-acs-signature-method", "HMAC-SHA1") # 设置签名方法 request.add_header("x-acs-signature-nonce", uuid.uuid4().hex) # 设置请求唯一码,防止网络重放攻击, 每个请求必须不同 request.add_header("x-acs-signature-version", "1.0") # 设置签名版本 def tag(text): content = json.dumps({"text": text, "tag_flag": "true"}) request.set_content_type("application/json;chrset=utf-8") # 设置请求格式 request.set_accept_format("application/json;chrset=utf-8") # 设置响应格式 request.set_content(content.encode('utf-8')) # 设置请求内容 request.set_version('2018-04-08') # 设置版本 request.set_action_name("None") response = client.do_action_with_exception(request) return json.loads(response)
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest img_file = 'img.jpg' b64_img = base64.b64encode(open(img_file, 'rb').read()).decode('ascii') b64_filename = base64.b64encode(img_file.encode('latin-1')).decode('ascii') client = AcsClient(os.getenv("ACCESSKEYID"), os.getenv("ACCESSKEYSECRET"), 'ap-northeast-1') request = CommonRequest() request.set_domain('imagesearch.ap-northeast-1.aliyuncs.com') request.set_version('2018-01-20') request.set_method('POST') request.set_protocol_type('HTTPS') request.set_uri_pattern('/item/search') request.add_query_param('instanceName', 'imagesearch001') params = {'cat_id': '0', 'pic_list': b64_filename} params[b64_filename] = b64_img start_offset = 0 content = "" meta = "" for k in params: meta = "{}{},{},{}#".format(meta, k, start_offset, start_offset + len(params[k])) start_offset += len(params[k]) content = "{}{}".format(content, params[k])