gateway-iot-edge/python2/alicloud_gateway_iot_edge/client.py (77 lines of code) (raw):
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
from __future__ import unicode_literals
import time
from Tea.request import TeaRequest
from Tea.exceptions import TeaException, UnretryableException
from Tea.core import TeaCore
from Tea.converter import TeaConverter
from alibabacloud_tea_util import models as util_models
from Url.client import Client as UrlClient
from Number.client import Client as NumberClient
from alibabacloud_tea_util.client import Client as UtilClient
class Client(object):
_app_key = None # type: str
_app_secret = None # type: str
_endpoint = None # type: str
def __init__(self, config):
self._app_key = config.app_key
self._app_secret = config.app_secret
self._endpoint = config.endpoint
def execute(self, request, runtime):
request.validate()
runtime.validate()
_runtime = {
'timeouted': 'retry',
'readTimeout': runtime.read_timeout,
'connectTimeout': runtime.connect_timeout,
'maxIdleConns': runtime.max_idle_conns,
'retry': {
'retryable': runtime.autoretry,
'maxAttempts': runtime.max_attempts
},
'ignoreSSL': runtime.ignore_ssl
}
_last_request = None
_last_exception = None
_now = time.time()
_retry_times = 0
while TeaCore.allow_retry(_runtime.get('retry'), _retry_times, _now):
if _retry_times > 0:
_backoff_time = TeaCore.get_backoff_time(_runtime.get('backoff'), _retry_times)
if _backoff_time > 0:
TeaCore.sleep(_backoff_time)
_retry_times = _retry_times + 1
try:
_request = TeaRequest()
_request.method = 'POST'
url = UrlClient.parse_url(self._endpoint)
_request.protocol = url.scheme
_request.port = NumberClient.parse_int(url.host.port)
_request.pathname = '%s/%s' % (TeaConverter.to_unicode(UtilClient.default_string(request.pathname, url.path.pathname)), TeaConverter.to_unicode(request.action))
_request.headers = TeaCore.merge({
'host': url.host.hostname,
'accept': 'application/json',
'content-type': 'application/json; charset=utf-8'
}, request.headers)
params = TeaCore.merge({
'AppKey': self._app_key,
'Action': request.action
}, request.body)
_request.body = UtilClient.to_jsonstring(params)
_last_request = _request
_response = TeaCore.do_action(_request, _runtime)
if UtilClient.is_4xx(_response.status_code) or UtilClient.is_5xx(_response.status_code):
res = UtilClient.read_as_json(_response.body)
err = UtilClient.assert_as_map(res)
err['statusCode'] = _response.status_code
raise TeaException({
'code': '%s' % TeaConverter.to_unicode(err.get('Code')),
'message': 'statusCode: %s, errorMessage: %s, requestId: %s' % (TeaConverter.to_unicode(err.get('statusCode')), TeaConverter.to_unicode(err.get('ErrorMessage')), TeaConverter.to_unicode(err.get('RequestId'))),
'data': err
})
return UtilClient.read_as_string(_response.body)
except Exception as e:
if TeaCore.is_retryable(e):
_last_exception = e
continue
raise e
raise UnretryableException(_last_request, _last_exception)