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())
예제 #2
0
 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'
         })
예제 #3
0
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)
예제 #4
0
 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")
예제 #5
0
 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")
예제 #6
0
파일: edas.py 프로젝트: sdlsyc/yunwei
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
예제 #10
0
    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)
예제 #12
0
    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"})
예제 #13
0
# 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'))
예제 #14
0
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'])
예제 #15
0
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:
예제 #16
0
# -*- 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])