antchain-gesaas 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- antchain_gesaas-1.0.2/LICENSE +13 -0
- antchain_gesaas-1.0.2/MANIFEST.in +2 -0
- antchain_gesaas-1.0.2/PKG-INFO +63 -0
- antchain_gesaas-1.0.2/README-CN.md +38 -0
- antchain_gesaas-1.0.2/README.md +40 -0
- antchain_gesaas-1.0.2/antchain_gesaas.egg-info/PKG-INFO +63 -0
- antchain_gesaas-1.0.2/antchain_gesaas.egg-info/SOURCES.txt +14 -0
- antchain_gesaas-1.0.2/antchain_gesaas.egg-info/dependency_links.txt +1 -0
- antchain_gesaas-1.0.2/antchain_gesaas.egg-info/requires.txt +3 -0
- antchain_gesaas-1.0.2/antchain_gesaas.egg-info/top_level.txt +1 -0
- antchain_gesaas-1.0.2/antchain_sdk_gesaas/__init__.py +1 -0
- antchain_gesaas-1.0.2/antchain_sdk_gesaas/client.py +388 -0
- antchain_gesaas-1.0.2/antchain_sdk_gesaas/models.py +547 -0
- antchain_gesaas-1.0.2/setup.cfg +7 -0
- antchain_gesaas-1.0.2/setup.py +78 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: antchain_gesaas
|
|
3
|
+
Version: 1.0.2
|
|
4
|
+
Summary: Ant Chain GESAAS SDK Library for Python
|
|
5
|
+
Home-page: https://github.com/alipay/antchain-openapi-prod-sdk
|
|
6
|
+
Author: Ant Chain SDK
|
|
7
|
+
Author-email: sdk-team@alibabacloud.com
|
|
8
|
+
License: Apache License 2.0
|
|
9
|
+
Description: English | [简体中文](README-CN.md)
|
|
10
|
+
|
|
11
|
+
## Ant Chain GESAAS SDK for Python
|
|
12
|
+
|
|
13
|
+
## Requirements
|
|
14
|
+
|
|
15
|
+
- Python >= 3.6
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
- **Install with pip**
|
|
20
|
+
|
|
21
|
+
Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Install the antchain-gesaas
|
|
25
|
+
pip install antchain-gesaas
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Issues
|
|
29
|
+
|
|
30
|
+
[Opening an Issue](https://github.com/alipay/antchain-openapi-prod-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
[Quick Examples](https://github.com/alipay/antchain-openapi-prod-sdk)
|
|
35
|
+
|
|
36
|
+
## Changelog
|
|
37
|
+
|
|
38
|
+
Detailed changes for each release are documented in the [release notes](./ChangeLog.md).
|
|
39
|
+
|
|
40
|
+
## References
|
|
41
|
+
|
|
42
|
+
- [Latest Release](https://github.com/alipay/antchain-openapi-prod-sdk/tree/master/python)
|
|
43
|
+
|
|
44
|
+
## License
|
|
45
|
+
|
|
46
|
+
[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
47
|
+
|
|
48
|
+
Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
|
|
49
|
+
|
|
50
|
+
Keywords: antchain,gesaas
|
|
51
|
+
Platform: any
|
|
52
|
+
Classifier: Development Status :: 4 - Beta
|
|
53
|
+
Classifier: Intended Audience :: Developers
|
|
54
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
55
|
+
Classifier: Programming Language :: Python
|
|
56
|
+
Classifier: Programming Language :: Python :: 3
|
|
57
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
58
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
59
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
60
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
61
|
+
Classifier: Topic :: Software Development
|
|
62
|
+
Requires-Python: >=3.6
|
|
63
|
+
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[English](README.md) | 简体中文
|
|
2
|
+
|
|
3
|
+
## Ant Chain GESAAS SDK for Python
|
|
4
|
+
|
|
5
|
+
## 要求
|
|
6
|
+
|
|
7
|
+
- Python >= 3.6
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
10
|
+
|
|
11
|
+
- **使用 pip 安装(推荐)**
|
|
12
|
+
|
|
13
|
+
如未安装 `pip`, 请先至pip官网 [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") 安装pip .
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# 安装 antchain-gesaas
|
|
17
|
+
pip install antchain-gesaas
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 问题
|
|
21
|
+
|
|
22
|
+
[提交 Issue](https://github.com/alipay/antchain-openapi-prod-sdk/issues/new),不符合指南的问题可能会立即关闭。
|
|
23
|
+
|
|
24
|
+
## 使用说明
|
|
25
|
+
|
|
26
|
+
[快速使用](https://github.com/alipay/antchain-openapi-prod-sdk)
|
|
27
|
+
|
|
28
|
+
## 发行说明
|
|
29
|
+
|
|
30
|
+
每个版本的详细更改记录在[发行说明](./ChangeLog.md)中。
|
|
31
|
+
|
|
32
|
+
## 相关
|
|
33
|
+
|
|
34
|
+
- [最新源码](https://github.com/alipay/antchain-openapi-prod-sdk/)
|
|
35
|
+
|
|
36
|
+
## 许可证
|
|
37
|
+
|
|
38
|
+
[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
English | [简体中文](README-CN.md)
|
|
2
|
+
|
|
3
|
+
## Ant Chain GESAAS SDK for Python
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Python >= 3.6
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
- **Install with pip**
|
|
12
|
+
|
|
13
|
+
Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Install the antchain-gesaas
|
|
17
|
+
pip install antchain-gesaas
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Issues
|
|
21
|
+
|
|
22
|
+
[Opening an Issue](https://github.com/alipay/antchain-openapi-prod-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
[Quick Examples](https://github.com/alipay/antchain-openapi-prod-sdk)
|
|
27
|
+
|
|
28
|
+
## Changelog
|
|
29
|
+
|
|
30
|
+
Detailed changes for each release are documented in the [release notes](./ChangeLog.md).
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
|
|
34
|
+
- [Latest Release](https://github.com/alipay/antchain-openapi-prod-sdk/tree/master/python)
|
|
35
|
+
|
|
36
|
+
## License
|
|
37
|
+
|
|
38
|
+
[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
39
|
+
|
|
40
|
+
Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: antchain-gesaas
|
|
3
|
+
Version: 1.0.2
|
|
4
|
+
Summary: Ant Chain GESAAS SDK Library for Python
|
|
5
|
+
Home-page: https://github.com/alipay/antchain-openapi-prod-sdk
|
|
6
|
+
Author: Ant Chain SDK
|
|
7
|
+
Author-email: sdk-team@alibabacloud.com
|
|
8
|
+
License: Apache License 2.0
|
|
9
|
+
Description: English | [简体中文](README-CN.md)
|
|
10
|
+
|
|
11
|
+
## Ant Chain GESAAS SDK for Python
|
|
12
|
+
|
|
13
|
+
## Requirements
|
|
14
|
+
|
|
15
|
+
- Python >= 3.6
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
- **Install with pip**
|
|
20
|
+
|
|
21
|
+
Python SDK uses a common package management tool named `pip`. If pip is not installed, see the [pip user guide](https://pip.pypa.io/en/stable/installing/ "pip User Guide") to install pip.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Install the antchain-gesaas
|
|
25
|
+
pip install antchain-gesaas
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Issues
|
|
29
|
+
|
|
30
|
+
[Opening an Issue](https://github.com/alipay/antchain-openapi-prod-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
[Quick Examples](https://github.com/alipay/antchain-openapi-prod-sdk)
|
|
35
|
+
|
|
36
|
+
## Changelog
|
|
37
|
+
|
|
38
|
+
Detailed changes for each release are documented in the [release notes](./ChangeLog.md).
|
|
39
|
+
|
|
40
|
+
## References
|
|
41
|
+
|
|
42
|
+
- [Latest Release](https://github.com/alipay/antchain-openapi-prod-sdk/tree/master/python)
|
|
43
|
+
|
|
44
|
+
## License
|
|
45
|
+
|
|
46
|
+
[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
47
|
+
|
|
48
|
+
Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
|
|
49
|
+
|
|
50
|
+
Keywords: antchain,gesaas
|
|
51
|
+
Platform: any
|
|
52
|
+
Classifier: Development Status :: 4 - Beta
|
|
53
|
+
Classifier: Intended Audience :: Developers
|
|
54
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
55
|
+
Classifier: Programming Language :: Python
|
|
56
|
+
Classifier: Programming Language :: Python :: 3
|
|
57
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
58
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
59
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
60
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
61
|
+
Classifier: Topic :: Software Development
|
|
62
|
+
Requires-Python: >=3.6
|
|
63
|
+
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
MANIFEST.in
|
|
3
|
+
README-CN.md
|
|
4
|
+
README.md
|
|
5
|
+
setup.cfg
|
|
6
|
+
setup.py
|
|
7
|
+
antchain_gesaas.egg-info/PKG-INFO
|
|
8
|
+
antchain_gesaas.egg-info/SOURCES.txt
|
|
9
|
+
antchain_gesaas.egg-info/dependency_links.txt
|
|
10
|
+
antchain_gesaas.egg-info/requires.txt
|
|
11
|
+
antchain_gesaas.egg-info/top_level.txt
|
|
12
|
+
antchain_sdk_gesaas/__init__.py
|
|
13
|
+
antchain_sdk_gesaas/client.py
|
|
14
|
+
antchain_sdk_gesaas/models.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
antchain_sdk_gesaas
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.0.2'
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# This file is auto-generated, don't edit it. Thanks.
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
from Tea.exceptions import TeaException, UnretryableException
|
|
6
|
+
from Tea.request import TeaRequest
|
|
7
|
+
from Tea.core import TeaCore
|
|
8
|
+
from antchain_alipay_util.antchain_utils import AntchainUtils
|
|
9
|
+
from typing import Dict
|
|
10
|
+
|
|
11
|
+
from antchain_sdk_gesaas import models as gesaas_models
|
|
12
|
+
from alibabacloud_tea_util.client import Client as UtilClient
|
|
13
|
+
from alibabacloud_tea_util import models as util_models
|
|
14
|
+
from alibabacloud_rpc_util.client import Client as RPCUtilClient
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Client:
|
|
18
|
+
_endpoint: str = None
|
|
19
|
+
_region_id: str = None
|
|
20
|
+
_access_key_id: str = None
|
|
21
|
+
_access_key_secret: str = None
|
|
22
|
+
_protocol: str = None
|
|
23
|
+
_user_agent: str = None
|
|
24
|
+
_read_timeout: int = None
|
|
25
|
+
_connect_timeout: int = None
|
|
26
|
+
_http_proxy: str = None
|
|
27
|
+
_https_proxy: str = None
|
|
28
|
+
_socks_5proxy: str = None
|
|
29
|
+
_socks_5net_work: str = None
|
|
30
|
+
_no_proxy: str = None
|
|
31
|
+
_max_idle_conns: int = None
|
|
32
|
+
_security_token: str = None
|
|
33
|
+
_max_idle_time_millis: int = None
|
|
34
|
+
_keep_alive_duration_millis: int = None
|
|
35
|
+
_max_requests: int = None
|
|
36
|
+
_max_requests_per_host: int = None
|
|
37
|
+
|
|
38
|
+
def __init__(
|
|
39
|
+
self,
|
|
40
|
+
config: gesaas_models.Config,
|
|
41
|
+
):
|
|
42
|
+
"""
|
|
43
|
+
Init client with Config
|
|
44
|
+
@param config: config contains the necessary information to create a client
|
|
45
|
+
"""
|
|
46
|
+
if UtilClient.is_unset(config):
|
|
47
|
+
raise TeaException({
|
|
48
|
+
'code': 'ParameterMissing',
|
|
49
|
+
'message': "'config' can not be unset"
|
|
50
|
+
})
|
|
51
|
+
self._access_key_id = config.access_key_id
|
|
52
|
+
self._access_key_secret = config.access_key_secret
|
|
53
|
+
self._security_token = config.security_token
|
|
54
|
+
self._endpoint = config.endpoint
|
|
55
|
+
self._protocol = config.protocol
|
|
56
|
+
self._user_agent = config.user_agent
|
|
57
|
+
self._read_timeout = UtilClient.default_number(config.read_timeout, 20000)
|
|
58
|
+
self._connect_timeout = UtilClient.default_number(config.connect_timeout, 20000)
|
|
59
|
+
self._http_proxy = config.http_proxy
|
|
60
|
+
self._https_proxy = config.https_proxy
|
|
61
|
+
self._no_proxy = config.no_proxy
|
|
62
|
+
self._socks_5proxy = config.socks_5proxy
|
|
63
|
+
self._socks_5net_work = config.socks_5net_work
|
|
64
|
+
self._max_idle_conns = UtilClient.default_number(config.max_idle_conns, 60000)
|
|
65
|
+
self._max_idle_time_millis = UtilClient.default_number(config.max_idle_time_millis, 5)
|
|
66
|
+
self._keep_alive_duration_millis = UtilClient.default_number(config.keep_alive_duration_millis, 5000)
|
|
67
|
+
self._max_requests = UtilClient.default_number(config.max_requests, 100)
|
|
68
|
+
self._max_requests_per_host = UtilClient.default_number(config.max_requests_per_host, 100)
|
|
69
|
+
|
|
70
|
+
def do_request(
|
|
71
|
+
self,
|
|
72
|
+
version: str,
|
|
73
|
+
action: str,
|
|
74
|
+
protocol: str,
|
|
75
|
+
method: str,
|
|
76
|
+
pathname: str,
|
|
77
|
+
request: dict,
|
|
78
|
+
headers: Dict[str, str],
|
|
79
|
+
runtime: util_models.RuntimeOptions,
|
|
80
|
+
) -> dict:
|
|
81
|
+
"""
|
|
82
|
+
Encapsulate the request and invoke the network
|
|
83
|
+
@param action: api name
|
|
84
|
+
@param protocol: http or https
|
|
85
|
+
@param method: e.g. GET
|
|
86
|
+
@param pathname: pathname of every api
|
|
87
|
+
@param request: which contains request params
|
|
88
|
+
@param runtime: which controls some details of call api, such as retry times
|
|
89
|
+
@return: the response
|
|
90
|
+
"""
|
|
91
|
+
runtime.validate()
|
|
92
|
+
_runtime = {
|
|
93
|
+
'timeouted': 'retry',
|
|
94
|
+
'readTimeout': UtilClient.default_number(runtime.read_timeout, self._read_timeout),
|
|
95
|
+
'connectTimeout': UtilClient.default_number(runtime.connect_timeout, self._connect_timeout),
|
|
96
|
+
'httpProxy': UtilClient.default_string(runtime.http_proxy, self._http_proxy),
|
|
97
|
+
'httpsProxy': UtilClient.default_string(runtime.https_proxy, self._https_proxy),
|
|
98
|
+
'noProxy': UtilClient.default_string(runtime.no_proxy, self._no_proxy),
|
|
99
|
+
'maxIdleConns': UtilClient.default_number(runtime.max_idle_conns, self._max_idle_conns),
|
|
100
|
+
'maxIdleTimeMillis': self._max_idle_time_millis,
|
|
101
|
+
'keepAliveDuration': self._keep_alive_duration_millis,
|
|
102
|
+
'maxRequests': self._max_requests,
|
|
103
|
+
'maxRequestsPerHost': self._max_requests_per_host,
|
|
104
|
+
'retry': {
|
|
105
|
+
'retryable': runtime.autoretry,
|
|
106
|
+
'maxAttempts': UtilClient.default_number(runtime.max_attempts, 3)
|
|
107
|
+
},
|
|
108
|
+
'backoff': {
|
|
109
|
+
'policy': UtilClient.default_string(runtime.backoff_policy, 'no'),
|
|
110
|
+
'period': UtilClient.default_number(runtime.backoff_period, 1)
|
|
111
|
+
},
|
|
112
|
+
'ignoreSSL': runtime.ignore_ssl,
|
|
113
|
+
# 订单详情列表
|
|
114
|
+
}
|
|
115
|
+
_last_request = None
|
|
116
|
+
_last_exception = None
|
|
117
|
+
_now = time.time()
|
|
118
|
+
_retry_times = 0
|
|
119
|
+
while TeaCore.allow_retry(_runtime.get('retry'), _retry_times, _now):
|
|
120
|
+
if _retry_times > 0:
|
|
121
|
+
_backoff_time = TeaCore.get_backoff_time(_runtime.get('backoff'), _retry_times)
|
|
122
|
+
if _backoff_time > 0:
|
|
123
|
+
TeaCore.sleep(_backoff_time)
|
|
124
|
+
_retry_times = _retry_times + 1
|
|
125
|
+
try:
|
|
126
|
+
_request = TeaRequest()
|
|
127
|
+
_request.protocol = UtilClient.default_string(self._protocol, protocol)
|
|
128
|
+
_request.method = method
|
|
129
|
+
_request.pathname = pathname
|
|
130
|
+
_request.query = {
|
|
131
|
+
'method': action,
|
|
132
|
+
'version': version,
|
|
133
|
+
'sign_type': 'HmacSHA1',
|
|
134
|
+
'req_time': AntchainUtils.get_timestamp(),
|
|
135
|
+
'req_msg_id': AntchainUtils.get_nonce(),
|
|
136
|
+
'access_key': self._access_key_id,
|
|
137
|
+
'base_sdk_version': 'TeaSDK-2.0',
|
|
138
|
+
'sdk_version': '1.0.2',
|
|
139
|
+
'_prod_code': 'GESAAS',
|
|
140
|
+
'_prod_channel': 'default'
|
|
141
|
+
}
|
|
142
|
+
if not UtilClient.empty(self._security_token):
|
|
143
|
+
_request.query['security_token'] = self._security_token
|
|
144
|
+
_request.headers = TeaCore.merge({
|
|
145
|
+
'host': UtilClient.default_string(self._endpoint, 'openapi.antchain.antgroup.com'),
|
|
146
|
+
'user-agent': UtilClient.get_user_agent(self._user_agent)
|
|
147
|
+
}, headers)
|
|
148
|
+
tmp = UtilClient.anyify_map_value(RPCUtilClient.query(request))
|
|
149
|
+
_request.body = UtilClient.to_form_string(tmp)
|
|
150
|
+
_request.headers['content-type'] = 'application/x-www-form-urlencoded'
|
|
151
|
+
signed_param = TeaCore.merge(_request.query,
|
|
152
|
+
RPCUtilClient.query(request))
|
|
153
|
+
_request.query['sign'] = AntchainUtils.get_signature(signed_param, self._access_key_secret)
|
|
154
|
+
_last_request = _request
|
|
155
|
+
_response = TeaCore.do_action(_request, _runtime)
|
|
156
|
+
raw = UtilClient.read_as_string(_response.body)
|
|
157
|
+
obj = UtilClient.parse_json(raw)
|
|
158
|
+
res = UtilClient.assert_as_map(obj)
|
|
159
|
+
resp = UtilClient.assert_as_map(res.get('response'))
|
|
160
|
+
if AntchainUtils.has_error(raw, self._access_key_secret):
|
|
161
|
+
raise TeaException({
|
|
162
|
+
'message': resp.get('result_msg'),
|
|
163
|
+
'data': resp,
|
|
164
|
+
'code': resp.get('result_code')
|
|
165
|
+
})
|
|
166
|
+
return resp
|
|
167
|
+
except Exception as e:
|
|
168
|
+
if TeaCore.is_retryable(e):
|
|
169
|
+
_last_exception = e
|
|
170
|
+
continue
|
|
171
|
+
raise e
|
|
172
|
+
raise UnretryableException(_last_request, _last_exception)
|
|
173
|
+
|
|
174
|
+
async def do_request_async(
|
|
175
|
+
self,
|
|
176
|
+
version: str,
|
|
177
|
+
action: str,
|
|
178
|
+
protocol: str,
|
|
179
|
+
method: str,
|
|
180
|
+
pathname: str,
|
|
181
|
+
request: dict,
|
|
182
|
+
headers: Dict[str, str],
|
|
183
|
+
runtime: util_models.RuntimeOptions,
|
|
184
|
+
) -> dict:
|
|
185
|
+
"""
|
|
186
|
+
Encapsulate the request and invoke the network
|
|
187
|
+
@param action: api name
|
|
188
|
+
@param protocol: http or https
|
|
189
|
+
@param method: e.g. GET
|
|
190
|
+
@param pathname: pathname of every api
|
|
191
|
+
@param request: which contains request params
|
|
192
|
+
@param runtime: which controls some details of call api, such as retry times
|
|
193
|
+
@return: the response
|
|
194
|
+
"""
|
|
195
|
+
runtime.validate()
|
|
196
|
+
_runtime = {
|
|
197
|
+
'timeouted': 'retry',
|
|
198
|
+
'readTimeout': UtilClient.default_number(runtime.read_timeout, self._read_timeout),
|
|
199
|
+
'connectTimeout': UtilClient.default_number(runtime.connect_timeout, self._connect_timeout),
|
|
200
|
+
'httpProxy': UtilClient.default_string(runtime.http_proxy, self._http_proxy),
|
|
201
|
+
'httpsProxy': UtilClient.default_string(runtime.https_proxy, self._https_proxy),
|
|
202
|
+
'noProxy': UtilClient.default_string(runtime.no_proxy, self._no_proxy),
|
|
203
|
+
'maxIdleConns': UtilClient.default_number(runtime.max_idle_conns, self._max_idle_conns),
|
|
204
|
+
'maxIdleTimeMillis': self._max_idle_time_millis,
|
|
205
|
+
'keepAliveDuration': self._keep_alive_duration_millis,
|
|
206
|
+
'maxRequests': self._max_requests,
|
|
207
|
+
'maxRequestsPerHost': self._max_requests_per_host,
|
|
208
|
+
'retry': {
|
|
209
|
+
'retryable': runtime.autoretry,
|
|
210
|
+
'maxAttempts': UtilClient.default_number(runtime.max_attempts, 3)
|
|
211
|
+
},
|
|
212
|
+
'backoff': {
|
|
213
|
+
'policy': UtilClient.default_string(runtime.backoff_policy, 'no'),
|
|
214
|
+
'period': UtilClient.default_number(runtime.backoff_period, 1)
|
|
215
|
+
},
|
|
216
|
+
'ignoreSSL': runtime.ignore_ssl,
|
|
217
|
+
# 订单详情列表
|
|
218
|
+
}
|
|
219
|
+
_last_request = None
|
|
220
|
+
_last_exception = None
|
|
221
|
+
_now = time.time()
|
|
222
|
+
_retry_times = 0
|
|
223
|
+
while TeaCore.allow_retry(_runtime.get('retry'), _retry_times, _now):
|
|
224
|
+
if _retry_times > 0:
|
|
225
|
+
_backoff_time = TeaCore.get_backoff_time(_runtime.get('backoff'), _retry_times)
|
|
226
|
+
if _backoff_time > 0:
|
|
227
|
+
TeaCore.sleep(_backoff_time)
|
|
228
|
+
_retry_times = _retry_times + 1
|
|
229
|
+
try:
|
|
230
|
+
_request = TeaRequest()
|
|
231
|
+
_request.protocol = UtilClient.default_string(self._protocol, protocol)
|
|
232
|
+
_request.method = method
|
|
233
|
+
_request.pathname = pathname
|
|
234
|
+
_request.query = {
|
|
235
|
+
'method': action,
|
|
236
|
+
'version': version,
|
|
237
|
+
'sign_type': 'HmacSHA1',
|
|
238
|
+
'req_time': AntchainUtils.get_timestamp(),
|
|
239
|
+
'req_msg_id': AntchainUtils.get_nonce(),
|
|
240
|
+
'access_key': self._access_key_id,
|
|
241
|
+
'base_sdk_version': 'TeaSDK-2.0',
|
|
242
|
+
'sdk_version': '1.0.2',
|
|
243
|
+
'_prod_code': 'GESAAS',
|
|
244
|
+
'_prod_channel': 'default'
|
|
245
|
+
}
|
|
246
|
+
if not UtilClient.empty(self._security_token):
|
|
247
|
+
_request.query['security_token'] = self._security_token
|
|
248
|
+
_request.headers = TeaCore.merge({
|
|
249
|
+
'host': UtilClient.default_string(self._endpoint, 'openapi.antchain.antgroup.com'),
|
|
250
|
+
'user-agent': UtilClient.get_user_agent(self._user_agent)
|
|
251
|
+
}, headers)
|
|
252
|
+
tmp = UtilClient.anyify_map_value(RPCUtilClient.query(request))
|
|
253
|
+
_request.body = UtilClient.to_form_string(tmp)
|
|
254
|
+
_request.headers['content-type'] = 'application/x-www-form-urlencoded'
|
|
255
|
+
signed_param = TeaCore.merge(_request.query,
|
|
256
|
+
RPCUtilClient.query(request))
|
|
257
|
+
_request.query['sign'] = AntchainUtils.get_signature(signed_param, self._access_key_secret)
|
|
258
|
+
_last_request = _request
|
|
259
|
+
_response = await TeaCore.async_do_action(_request, _runtime)
|
|
260
|
+
raw = await UtilClient.read_as_string_async(_response.body)
|
|
261
|
+
obj = UtilClient.parse_json(raw)
|
|
262
|
+
res = UtilClient.assert_as_map(obj)
|
|
263
|
+
resp = UtilClient.assert_as_map(res.get('response'))
|
|
264
|
+
if AntchainUtils.has_error(raw, self._access_key_secret):
|
|
265
|
+
raise TeaException({
|
|
266
|
+
'message': resp.get('result_msg'),
|
|
267
|
+
'data': resp,
|
|
268
|
+
'code': resp.get('result_code')
|
|
269
|
+
})
|
|
270
|
+
return resp
|
|
271
|
+
except Exception as e:
|
|
272
|
+
if TeaCore.is_retryable(e):
|
|
273
|
+
_last_exception = e
|
|
274
|
+
continue
|
|
275
|
+
raise e
|
|
276
|
+
raise UnretryableException(_last_request, _last_exception)
|
|
277
|
+
|
|
278
|
+
def submit_rightsprod_grant(
|
|
279
|
+
self,
|
|
280
|
+
request: gesaas_models.SubmitRightsprodGrantRequest,
|
|
281
|
+
) -> gesaas_models.SubmitRightsprodGrantResponse:
|
|
282
|
+
"""
|
|
283
|
+
Description: 权益中心权益发放
|
|
284
|
+
Summary: 权益发放
|
|
285
|
+
"""
|
|
286
|
+
runtime = util_models.RuntimeOptions()
|
|
287
|
+
headers = {}
|
|
288
|
+
return self.submit_rightsprod_grant_ex(request, headers, runtime)
|
|
289
|
+
|
|
290
|
+
async def submit_rightsprod_grant_async(
|
|
291
|
+
self,
|
|
292
|
+
request: gesaas_models.SubmitRightsprodGrantRequest,
|
|
293
|
+
) -> gesaas_models.SubmitRightsprodGrantResponse:
|
|
294
|
+
"""
|
|
295
|
+
Description: 权益中心权益发放
|
|
296
|
+
Summary: 权益发放
|
|
297
|
+
"""
|
|
298
|
+
runtime = util_models.RuntimeOptions()
|
|
299
|
+
headers = {}
|
|
300
|
+
return await self.submit_rightsprod_grant_ex_async(request, headers, runtime)
|
|
301
|
+
|
|
302
|
+
def submit_rightsprod_grant_ex(
|
|
303
|
+
self,
|
|
304
|
+
request: gesaas_models.SubmitRightsprodGrantRequest,
|
|
305
|
+
headers: Dict[str, str],
|
|
306
|
+
runtime: util_models.RuntimeOptions,
|
|
307
|
+
) -> gesaas_models.SubmitRightsprodGrantResponse:
|
|
308
|
+
"""
|
|
309
|
+
Description: 权益中心权益发放
|
|
310
|
+
Summary: 权益发放
|
|
311
|
+
"""
|
|
312
|
+
UtilClient.validate_model(request)
|
|
313
|
+
return TeaCore.from_map(
|
|
314
|
+
gesaas_models.SubmitRightsprodGrantResponse(),
|
|
315
|
+
self.do_request('1.0', 'antdigital.gesaas.rightsprod.grant.submit', 'HTTPS', 'POST', f'/gateway.do', TeaCore.to_map(request), headers, runtime)
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
async def submit_rightsprod_grant_ex_async(
|
|
319
|
+
self,
|
|
320
|
+
request: gesaas_models.SubmitRightsprodGrantRequest,
|
|
321
|
+
headers: Dict[str, str],
|
|
322
|
+
runtime: util_models.RuntimeOptions,
|
|
323
|
+
) -> gesaas_models.SubmitRightsprodGrantResponse:
|
|
324
|
+
"""
|
|
325
|
+
Description: 权益中心权益发放
|
|
326
|
+
Summary: 权益发放
|
|
327
|
+
"""
|
|
328
|
+
UtilClient.validate_model(request)
|
|
329
|
+
return TeaCore.from_map(
|
|
330
|
+
gesaas_models.SubmitRightsprodGrantResponse(),
|
|
331
|
+
await self.do_request_async('1.0', 'antdigital.gesaas.rightsprod.grant.submit', 'HTTPS', 'POST', f'/gateway.do', TeaCore.to_map(request), headers, runtime)
|
|
332
|
+
)
|
|
333
|
+
|
|
334
|
+
def query_rightsprod_grant(
|
|
335
|
+
self,
|
|
336
|
+
request: gesaas_models.QueryRightsprodGrantRequest,
|
|
337
|
+
) -> gesaas_models.QueryRightsprodGrantResponse:
|
|
338
|
+
"""
|
|
339
|
+
Description: 权益发放结果查询
|
|
340
|
+
Summary: 权益发放结果查询
|
|
341
|
+
"""
|
|
342
|
+
runtime = util_models.RuntimeOptions()
|
|
343
|
+
headers = {}
|
|
344
|
+
return self.query_rightsprod_grant_ex(request, headers, runtime)
|
|
345
|
+
|
|
346
|
+
async def query_rightsprod_grant_async(
|
|
347
|
+
self,
|
|
348
|
+
request: gesaas_models.QueryRightsprodGrantRequest,
|
|
349
|
+
) -> gesaas_models.QueryRightsprodGrantResponse:
|
|
350
|
+
"""
|
|
351
|
+
Description: 权益发放结果查询
|
|
352
|
+
Summary: 权益发放结果查询
|
|
353
|
+
"""
|
|
354
|
+
runtime = util_models.RuntimeOptions()
|
|
355
|
+
headers = {}
|
|
356
|
+
return await self.query_rightsprod_grant_ex_async(request, headers, runtime)
|
|
357
|
+
|
|
358
|
+
def query_rightsprod_grant_ex(
|
|
359
|
+
self,
|
|
360
|
+
request: gesaas_models.QueryRightsprodGrantRequest,
|
|
361
|
+
headers: Dict[str, str],
|
|
362
|
+
runtime: util_models.RuntimeOptions,
|
|
363
|
+
) -> gesaas_models.QueryRightsprodGrantResponse:
|
|
364
|
+
"""
|
|
365
|
+
Description: 权益发放结果查询
|
|
366
|
+
Summary: 权益发放结果查询
|
|
367
|
+
"""
|
|
368
|
+
UtilClient.validate_model(request)
|
|
369
|
+
return TeaCore.from_map(
|
|
370
|
+
gesaas_models.QueryRightsprodGrantResponse(),
|
|
371
|
+
self.do_request('1.0', 'antdigital.gesaas.rightsprod.grant.query', 'HTTPS', 'POST', f'/gateway.do', TeaCore.to_map(request), headers, runtime)
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
async def query_rightsprod_grant_ex_async(
|
|
375
|
+
self,
|
|
376
|
+
request: gesaas_models.QueryRightsprodGrantRequest,
|
|
377
|
+
headers: Dict[str, str],
|
|
378
|
+
runtime: util_models.RuntimeOptions,
|
|
379
|
+
) -> gesaas_models.QueryRightsprodGrantResponse:
|
|
380
|
+
"""
|
|
381
|
+
Description: 权益发放结果查询
|
|
382
|
+
Summary: 权益发放结果查询
|
|
383
|
+
"""
|
|
384
|
+
UtilClient.validate_model(request)
|
|
385
|
+
return TeaCore.from_map(
|
|
386
|
+
gesaas_models.QueryRightsprodGrantResponse(),
|
|
387
|
+
await self.do_request_async('1.0', 'antdigital.gesaas.rightsprod.grant.query', 'HTTPS', 'POST', f'/gateway.do', TeaCore.to_map(request), headers, runtime)
|
|
388
|
+
)
|
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# This file is auto-generated, don't edit it. Thanks.
|
|
3
|
+
from Tea.model import TeaModel
|
|
4
|
+
from typing import List
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Config(TeaModel):
|
|
8
|
+
"""
|
|
9
|
+
Model for initing client
|
|
10
|
+
"""
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
access_key_id: str = None,
|
|
14
|
+
access_key_secret: str = None,
|
|
15
|
+
security_token: str = None,
|
|
16
|
+
protocol: str = None,
|
|
17
|
+
read_timeout: int = None,
|
|
18
|
+
connect_timeout: int = None,
|
|
19
|
+
http_proxy: str = None,
|
|
20
|
+
https_proxy: str = None,
|
|
21
|
+
endpoint: str = None,
|
|
22
|
+
no_proxy: str = None,
|
|
23
|
+
max_idle_conns: int = None,
|
|
24
|
+
user_agent: str = None,
|
|
25
|
+
socks_5proxy: str = None,
|
|
26
|
+
socks_5net_work: str = None,
|
|
27
|
+
max_idle_time_millis: int = None,
|
|
28
|
+
keep_alive_duration_millis: int = None,
|
|
29
|
+
max_requests: int = None,
|
|
30
|
+
max_requests_per_host: int = None,
|
|
31
|
+
):
|
|
32
|
+
# accesskey id
|
|
33
|
+
self.access_key_id = access_key_id
|
|
34
|
+
# accesskey secret
|
|
35
|
+
self.access_key_secret = access_key_secret
|
|
36
|
+
# security token
|
|
37
|
+
self.security_token = security_token
|
|
38
|
+
# http protocol
|
|
39
|
+
self.protocol = protocol
|
|
40
|
+
# read timeout
|
|
41
|
+
self.read_timeout = read_timeout
|
|
42
|
+
# connect timeout
|
|
43
|
+
self.connect_timeout = connect_timeout
|
|
44
|
+
# http proxy
|
|
45
|
+
self.http_proxy = http_proxy
|
|
46
|
+
# https proxy
|
|
47
|
+
self.https_proxy = https_proxy
|
|
48
|
+
# endpoint
|
|
49
|
+
self.endpoint = endpoint
|
|
50
|
+
# proxy white list
|
|
51
|
+
self.no_proxy = no_proxy
|
|
52
|
+
# max idle conns
|
|
53
|
+
self.max_idle_conns = max_idle_conns
|
|
54
|
+
# user agent
|
|
55
|
+
self.user_agent = user_agent
|
|
56
|
+
# socks5 proxy
|
|
57
|
+
self.socks_5proxy = socks_5proxy
|
|
58
|
+
# socks5 network
|
|
59
|
+
self.socks_5net_work = socks_5net_work
|
|
60
|
+
# 长链接最大空闲时长
|
|
61
|
+
self.max_idle_time_millis = max_idle_time_millis
|
|
62
|
+
# 长链接最大连接时长
|
|
63
|
+
self.keep_alive_duration_millis = keep_alive_duration_millis
|
|
64
|
+
# 最大连接数(长链接最大总数)
|
|
65
|
+
self.max_requests = max_requests
|
|
66
|
+
# 每个目标主机的最大连接数(分主机域名的长链接最大总数
|
|
67
|
+
self.max_requests_per_host = max_requests_per_host
|
|
68
|
+
|
|
69
|
+
def validate(self):
|
|
70
|
+
pass
|
|
71
|
+
|
|
72
|
+
def to_map(self):
|
|
73
|
+
_map = super().to_map()
|
|
74
|
+
if _map is not None:
|
|
75
|
+
return _map
|
|
76
|
+
|
|
77
|
+
result = dict()
|
|
78
|
+
if self.access_key_id is not None:
|
|
79
|
+
result['accessKeyId'] = self.access_key_id
|
|
80
|
+
if self.access_key_secret is not None:
|
|
81
|
+
result['accessKeySecret'] = self.access_key_secret
|
|
82
|
+
if self.security_token is not None:
|
|
83
|
+
result['securityToken'] = self.security_token
|
|
84
|
+
if self.protocol is not None:
|
|
85
|
+
result['protocol'] = self.protocol
|
|
86
|
+
if self.read_timeout is not None:
|
|
87
|
+
result['readTimeout'] = self.read_timeout
|
|
88
|
+
if self.connect_timeout is not None:
|
|
89
|
+
result['connectTimeout'] = self.connect_timeout
|
|
90
|
+
if self.http_proxy is not None:
|
|
91
|
+
result['httpProxy'] = self.http_proxy
|
|
92
|
+
if self.https_proxy is not None:
|
|
93
|
+
result['httpsProxy'] = self.https_proxy
|
|
94
|
+
if self.endpoint is not None:
|
|
95
|
+
result['endpoint'] = self.endpoint
|
|
96
|
+
if self.no_proxy is not None:
|
|
97
|
+
result['noProxy'] = self.no_proxy
|
|
98
|
+
if self.max_idle_conns is not None:
|
|
99
|
+
result['maxIdleConns'] = self.max_idle_conns
|
|
100
|
+
if self.user_agent is not None:
|
|
101
|
+
result['userAgent'] = self.user_agent
|
|
102
|
+
if self.socks_5proxy is not None:
|
|
103
|
+
result['socks5Proxy'] = self.socks_5proxy
|
|
104
|
+
if self.socks_5net_work is not None:
|
|
105
|
+
result['socks5NetWork'] = self.socks_5net_work
|
|
106
|
+
if self.max_idle_time_millis is not None:
|
|
107
|
+
result['maxIdleTimeMillis'] = self.max_idle_time_millis
|
|
108
|
+
if self.keep_alive_duration_millis is not None:
|
|
109
|
+
result['keepAliveDurationMillis'] = self.keep_alive_duration_millis
|
|
110
|
+
if self.max_requests is not None:
|
|
111
|
+
result['maxRequests'] = self.max_requests
|
|
112
|
+
if self.max_requests_per_host is not None:
|
|
113
|
+
result['maxRequestsPerHost'] = self.max_requests_per_host
|
|
114
|
+
return result
|
|
115
|
+
|
|
116
|
+
def from_map(self, m: dict = None):
|
|
117
|
+
m = m or dict()
|
|
118
|
+
if m.get('accessKeyId') is not None:
|
|
119
|
+
self.access_key_id = m.get('accessKeyId')
|
|
120
|
+
if m.get('accessKeySecret') is not None:
|
|
121
|
+
self.access_key_secret = m.get('accessKeySecret')
|
|
122
|
+
if m.get('securityToken') is not None:
|
|
123
|
+
self.security_token = m.get('securityToken')
|
|
124
|
+
if m.get('protocol') is not None:
|
|
125
|
+
self.protocol = m.get('protocol')
|
|
126
|
+
if m.get('readTimeout') is not None:
|
|
127
|
+
self.read_timeout = m.get('readTimeout')
|
|
128
|
+
if m.get('connectTimeout') is not None:
|
|
129
|
+
self.connect_timeout = m.get('connectTimeout')
|
|
130
|
+
if m.get('httpProxy') is not None:
|
|
131
|
+
self.http_proxy = m.get('httpProxy')
|
|
132
|
+
if m.get('httpsProxy') is not None:
|
|
133
|
+
self.https_proxy = m.get('httpsProxy')
|
|
134
|
+
if m.get('endpoint') is not None:
|
|
135
|
+
self.endpoint = m.get('endpoint')
|
|
136
|
+
if m.get('noProxy') is not None:
|
|
137
|
+
self.no_proxy = m.get('noProxy')
|
|
138
|
+
if m.get('maxIdleConns') is not None:
|
|
139
|
+
self.max_idle_conns = m.get('maxIdleConns')
|
|
140
|
+
if m.get('userAgent') is not None:
|
|
141
|
+
self.user_agent = m.get('userAgent')
|
|
142
|
+
if m.get('socks5Proxy') is not None:
|
|
143
|
+
self.socks_5proxy = m.get('socks5Proxy')
|
|
144
|
+
if m.get('socks5NetWork') is not None:
|
|
145
|
+
self.socks_5net_work = m.get('socks5NetWork')
|
|
146
|
+
if m.get('maxIdleTimeMillis') is not None:
|
|
147
|
+
self.max_idle_time_millis = m.get('maxIdleTimeMillis')
|
|
148
|
+
if m.get('keepAliveDurationMillis') is not None:
|
|
149
|
+
self.keep_alive_duration_millis = m.get('keepAliveDurationMillis')
|
|
150
|
+
if m.get('maxRequests') is not None:
|
|
151
|
+
self.max_requests = m.get('maxRequests')
|
|
152
|
+
if m.get('maxRequestsPerHost') is not None:
|
|
153
|
+
self.max_requests_per_host = m.get('maxRequestsPerHost')
|
|
154
|
+
return self
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class OrderDetail(TeaModel):
|
|
158
|
+
def __init__(
|
|
159
|
+
self,
|
|
160
|
+
voucher_code: str = None,
|
|
161
|
+
):
|
|
162
|
+
# 凭证编号
|
|
163
|
+
self.voucher_code = voucher_code
|
|
164
|
+
|
|
165
|
+
def validate(self):
|
|
166
|
+
self.validate_required(self.voucher_code, 'voucher_code')
|
|
167
|
+
|
|
168
|
+
def to_map(self):
|
|
169
|
+
_map = super().to_map()
|
|
170
|
+
if _map is not None:
|
|
171
|
+
return _map
|
|
172
|
+
|
|
173
|
+
result = dict()
|
|
174
|
+
if self.voucher_code is not None:
|
|
175
|
+
result['voucher_code'] = self.voucher_code
|
|
176
|
+
return result
|
|
177
|
+
|
|
178
|
+
def from_map(self, m: dict = None):
|
|
179
|
+
m = m or dict()
|
|
180
|
+
if m.get('voucher_code') is not None:
|
|
181
|
+
self.voucher_code = m.get('voucher_code')
|
|
182
|
+
return self
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class CommonResponse(TeaModel):
|
|
186
|
+
def __init__(
|
|
187
|
+
self,
|
|
188
|
+
code: str = None,
|
|
189
|
+
msg: str = None,
|
|
190
|
+
sub_code: str = None,
|
|
191
|
+
sub_msg: str = None,
|
|
192
|
+
retry: bool = None,
|
|
193
|
+
):
|
|
194
|
+
# 结果码
|
|
195
|
+
self.code = code
|
|
196
|
+
# 返回码描述
|
|
197
|
+
self.msg = msg
|
|
198
|
+
# 业务处理结果码
|
|
199
|
+
#
|
|
200
|
+
self.sub_code = sub_code
|
|
201
|
+
# 返回的提示信息
|
|
202
|
+
self.sub_msg = sub_msg
|
|
203
|
+
# 可否重试
|
|
204
|
+
self.retry = retry
|
|
205
|
+
|
|
206
|
+
def validate(self):
|
|
207
|
+
self.validate_required(self.code, 'code')
|
|
208
|
+
self.validate_required(self.msg, 'msg')
|
|
209
|
+
|
|
210
|
+
def to_map(self):
|
|
211
|
+
_map = super().to_map()
|
|
212
|
+
if _map is not None:
|
|
213
|
+
return _map
|
|
214
|
+
|
|
215
|
+
result = dict()
|
|
216
|
+
if self.code is not None:
|
|
217
|
+
result['code'] = self.code
|
|
218
|
+
if self.msg is not None:
|
|
219
|
+
result['msg'] = self.msg
|
|
220
|
+
if self.sub_code is not None:
|
|
221
|
+
result['sub_code'] = self.sub_code
|
|
222
|
+
if self.sub_msg is not None:
|
|
223
|
+
result['sub_msg'] = self.sub_msg
|
|
224
|
+
if self.retry is not None:
|
|
225
|
+
result['retry'] = self.retry
|
|
226
|
+
return result
|
|
227
|
+
|
|
228
|
+
def from_map(self, m: dict = None):
|
|
229
|
+
m = m or dict()
|
|
230
|
+
if m.get('code') is not None:
|
|
231
|
+
self.code = m.get('code')
|
|
232
|
+
if m.get('msg') is not None:
|
|
233
|
+
self.msg = m.get('msg')
|
|
234
|
+
if m.get('sub_code') is not None:
|
|
235
|
+
self.sub_code = m.get('sub_code')
|
|
236
|
+
if m.get('sub_msg') is not None:
|
|
237
|
+
self.sub_msg = m.get('sub_msg')
|
|
238
|
+
if m.get('retry') is not None:
|
|
239
|
+
self.retry = m.get('retry')
|
|
240
|
+
return self
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
class RightsGrantResultVO(TeaModel):
|
|
244
|
+
def __init__(
|
|
245
|
+
self,
|
|
246
|
+
expire_time: str = None,
|
|
247
|
+
effect_time: str = None,
|
|
248
|
+
grant_status: str = None,
|
|
249
|
+
order_details: List[OrderDetail] = None,
|
|
250
|
+
):
|
|
251
|
+
# 过期时间
|
|
252
|
+
self.expire_time = expire_time
|
|
253
|
+
# 生效时间
|
|
254
|
+
self.effect_time = effect_time
|
|
255
|
+
# 发放状态:
|
|
256
|
+
# GRANTING:发放处理中 GRANT_SUCCESS:发放成功 GRANT_FAIL:发放失败
|
|
257
|
+
self.grant_status = grant_status
|
|
258
|
+
# 订单详情列表
|
|
259
|
+
self.order_details = order_details
|
|
260
|
+
|
|
261
|
+
def validate(self):
|
|
262
|
+
if self.expire_time is not None:
|
|
263
|
+
self.validate_pattern(self.expire_time, 'expire_time', '\\d{4}[-]\\d{1,2}[-]\\d{1,2}[T]\\d{2}:\\d{2}:\\d{2}([Z]|([\\.]\\d{1,9})?[\\+]\\d{2}[\\:]?\\d{2})')
|
|
264
|
+
if self.effect_time is not None:
|
|
265
|
+
self.validate_pattern(self.effect_time, 'effect_time', '\\d{4}[-]\\d{1,2}[-]\\d{1,2}[T]\\d{2}:\\d{2}:\\d{2}([Z]|([\\.]\\d{1,9})?[\\+]\\d{2}[\\:]?\\d{2})')
|
|
266
|
+
self.validate_required(self.grant_status, 'grant_status')
|
|
267
|
+
if self.order_details:
|
|
268
|
+
for k in self.order_details:
|
|
269
|
+
if k:
|
|
270
|
+
k.validate()
|
|
271
|
+
|
|
272
|
+
def to_map(self):
|
|
273
|
+
_map = super().to_map()
|
|
274
|
+
if _map is not None:
|
|
275
|
+
return _map
|
|
276
|
+
|
|
277
|
+
result = dict()
|
|
278
|
+
if self.expire_time is not None:
|
|
279
|
+
result['expire_time'] = self.expire_time
|
|
280
|
+
if self.effect_time is not None:
|
|
281
|
+
result['effect_time'] = self.effect_time
|
|
282
|
+
if self.grant_status is not None:
|
|
283
|
+
result['grant_status'] = self.grant_status
|
|
284
|
+
result['order_details'] = []
|
|
285
|
+
if self.order_details is not None:
|
|
286
|
+
for k in self.order_details:
|
|
287
|
+
result['order_details'].append(k.to_map() if k else None)
|
|
288
|
+
return result
|
|
289
|
+
|
|
290
|
+
def from_map(self, m: dict = None):
|
|
291
|
+
m = m or dict()
|
|
292
|
+
if m.get('expire_time') is not None:
|
|
293
|
+
self.expire_time = m.get('expire_time')
|
|
294
|
+
if m.get('effect_time') is not None:
|
|
295
|
+
self.effect_time = m.get('effect_time')
|
|
296
|
+
if m.get('grant_status') is not None:
|
|
297
|
+
self.grant_status = m.get('grant_status')
|
|
298
|
+
self.order_details = []
|
|
299
|
+
if m.get('order_details') is not None:
|
|
300
|
+
for k in m.get('order_details'):
|
|
301
|
+
temp_model = OrderDetail()
|
|
302
|
+
self.order_details.append(temp_model.from_map(k))
|
|
303
|
+
return self
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
class SubmitRightsprodGrantRequest(TeaModel):
|
|
307
|
+
def __init__(
|
|
308
|
+
self,
|
|
309
|
+
auth_token: str = None,
|
|
310
|
+
product_instance_id: str = None,
|
|
311
|
+
user_id: str = None,
|
|
312
|
+
phone_number: str = None,
|
|
313
|
+
merchant_no: str = None,
|
|
314
|
+
rights_code: str = None,
|
|
315
|
+
grant_num: int = None,
|
|
316
|
+
face_value: str = None,
|
|
317
|
+
out_grant_order_no: str = None,
|
|
318
|
+
ext_info: str = None,
|
|
319
|
+
grant_info: str = None,
|
|
320
|
+
):
|
|
321
|
+
# OAuth模式下的授权token
|
|
322
|
+
self.auth_token = auth_token
|
|
323
|
+
self.product_instance_id = product_instance_id
|
|
324
|
+
# 2088xxxx123
|
|
325
|
+
self.user_id = user_id
|
|
326
|
+
# 用户手机号
|
|
327
|
+
self.phone_number = phone_number
|
|
328
|
+
# 商户编号
|
|
329
|
+
self.merchant_no = merchant_no
|
|
330
|
+
# 权益编码
|
|
331
|
+
self.rights_code = rights_code
|
|
332
|
+
# 发放数量
|
|
333
|
+
self.grant_num = grant_num
|
|
334
|
+
# 面额,动态面额类型必传
|
|
335
|
+
self.face_value = face_value
|
|
336
|
+
# 外部发放订单号
|
|
337
|
+
self.out_grant_order_no = out_grant_order_no
|
|
338
|
+
# 扩展信息
|
|
339
|
+
self.ext_info = ext_info
|
|
340
|
+
# 发放信息,如活动ID等信息
|
|
341
|
+
self.grant_info = grant_info
|
|
342
|
+
|
|
343
|
+
def validate(self):
|
|
344
|
+
self.validate_required(self.rights_code, 'rights_code')
|
|
345
|
+
self.validate_required(self.grant_num, 'grant_num')
|
|
346
|
+
self.validate_required(self.out_grant_order_no, 'out_grant_order_no')
|
|
347
|
+
|
|
348
|
+
def to_map(self):
|
|
349
|
+
_map = super().to_map()
|
|
350
|
+
if _map is not None:
|
|
351
|
+
return _map
|
|
352
|
+
|
|
353
|
+
result = dict()
|
|
354
|
+
if self.auth_token is not None:
|
|
355
|
+
result['auth_token'] = self.auth_token
|
|
356
|
+
if self.product_instance_id is not None:
|
|
357
|
+
result['product_instance_id'] = self.product_instance_id
|
|
358
|
+
if self.user_id is not None:
|
|
359
|
+
result['user_id'] = self.user_id
|
|
360
|
+
if self.phone_number is not None:
|
|
361
|
+
result['phone_number'] = self.phone_number
|
|
362
|
+
if self.merchant_no is not None:
|
|
363
|
+
result['merchant_no'] = self.merchant_no
|
|
364
|
+
if self.rights_code is not None:
|
|
365
|
+
result['rights_code'] = self.rights_code
|
|
366
|
+
if self.grant_num is not None:
|
|
367
|
+
result['grant_num'] = self.grant_num
|
|
368
|
+
if self.face_value is not None:
|
|
369
|
+
result['face_value'] = self.face_value
|
|
370
|
+
if self.out_grant_order_no is not None:
|
|
371
|
+
result['out_grant_order_no'] = self.out_grant_order_no
|
|
372
|
+
if self.ext_info is not None:
|
|
373
|
+
result['ext_info'] = self.ext_info
|
|
374
|
+
if self.grant_info is not None:
|
|
375
|
+
result['grant_info'] = self.grant_info
|
|
376
|
+
return result
|
|
377
|
+
|
|
378
|
+
def from_map(self, m: dict = None):
|
|
379
|
+
m = m or dict()
|
|
380
|
+
if m.get('auth_token') is not None:
|
|
381
|
+
self.auth_token = m.get('auth_token')
|
|
382
|
+
if m.get('product_instance_id') is not None:
|
|
383
|
+
self.product_instance_id = m.get('product_instance_id')
|
|
384
|
+
if m.get('user_id') is not None:
|
|
385
|
+
self.user_id = m.get('user_id')
|
|
386
|
+
if m.get('phone_number') is not None:
|
|
387
|
+
self.phone_number = m.get('phone_number')
|
|
388
|
+
if m.get('merchant_no') is not None:
|
|
389
|
+
self.merchant_no = m.get('merchant_no')
|
|
390
|
+
if m.get('rights_code') is not None:
|
|
391
|
+
self.rights_code = m.get('rights_code')
|
|
392
|
+
if m.get('grant_num') is not None:
|
|
393
|
+
self.grant_num = m.get('grant_num')
|
|
394
|
+
if m.get('face_value') is not None:
|
|
395
|
+
self.face_value = m.get('face_value')
|
|
396
|
+
if m.get('out_grant_order_no') is not None:
|
|
397
|
+
self.out_grant_order_no = m.get('out_grant_order_no')
|
|
398
|
+
if m.get('ext_info') is not None:
|
|
399
|
+
self.ext_info = m.get('ext_info')
|
|
400
|
+
if m.get('grant_info') is not None:
|
|
401
|
+
self.grant_info = m.get('grant_info')
|
|
402
|
+
return self
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
class SubmitRightsprodGrantResponse(TeaModel):
|
|
406
|
+
def __init__(
|
|
407
|
+
self,
|
|
408
|
+
req_msg_id: str = None,
|
|
409
|
+
result_code: str = None,
|
|
410
|
+
result_msg: str = None,
|
|
411
|
+
rights_grant_result: RightsGrantResultVO = None,
|
|
412
|
+
):
|
|
413
|
+
# 请求唯一ID,用于链路跟踪和问题排查
|
|
414
|
+
self.req_msg_id = req_msg_id
|
|
415
|
+
# 结果码,一般OK表示调用成功
|
|
416
|
+
self.result_code = result_code
|
|
417
|
+
# 异常信息的文本描述
|
|
418
|
+
self.result_msg = result_msg
|
|
419
|
+
# 权益发放结果
|
|
420
|
+
self.rights_grant_result = rights_grant_result
|
|
421
|
+
|
|
422
|
+
def validate(self):
|
|
423
|
+
if self.rights_grant_result:
|
|
424
|
+
self.rights_grant_result.validate()
|
|
425
|
+
|
|
426
|
+
def to_map(self):
|
|
427
|
+
_map = super().to_map()
|
|
428
|
+
if _map is not None:
|
|
429
|
+
return _map
|
|
430
|
+
|
|
431
|
+
result = dict()
|
|
432
|
+
if self.req_msg_id is not None:
|
|
433
|
+
result['req_msg_id'] = self.req_msg_id
|
|
434
|
+
if self.result_code is not None:
|
|
435
|
+
result['result_code'] = self.result_code
|
|
436
|
+
if self.result_msg is not None:
|
|
437
|
+
result['result_msg'] = self.result_msg
|
|
438
|
+
if self.rights_grant_result is not None:
|
|
439
|
+
result['rights_grant_result'] = self.rights_grant_result.to_map()
|
|
440
|
+
return result
|
|
441
|
+
|
|
442
|
+
def from_map(self, m: dict = None):
|
|
443
|
+
m = m or dict()
|
|
444
|
+
if m.get('req_msg_id') is not None:
|
|
445
|
+
self.req_msg_id = m.get('req_msg_id')
|
|
446
|
+
if m.get('result_code') is not None:
|
|
447
|
+
self.result_code = m.get('result_code')
|
|
448
|
+
if m.get('result_msg') is not None:
|
|
449
|
+
self.result_msg = m.get('result_msg')
|
|
450
|
+
if m.get('rights_grant_result') is not None:
|
|
451
|
+
temp_model = RightsGrantResultVO()
|
|
452
|
+
self.rights_grant_result = temp_model.from_map(m['rights_grant_result'])
|
|
453
|
+
return self
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
class QueryRightsprodGrantRequest(TeaModel):
|
|
457
|
+
def __init__(
|
|
458
|
+
self,
|
|
459
|
+
auth_token: str = None,
|
|
460
|
+
product_instance_id: str = None,
|
|
461
|
+
out_grant_order_no: str = None,
|
|
462
|
+
):
|
|
463
|
+
# OAuth模式下的授权token
|
|
464
|
+
self.auth_token = auth_token
|
|
465
|
+
self.product_instance_id = product_instance_id
|
|
466
|
+
# 外部发放订单号
|
|
467
|
+
self.out_grant_order_no = out_grant_order_no
|
|
468
|
+
|
|
469
|
+
def validate(self):
|
|
470
|
+
self.validate_required(self.out_grant_order_no, 'out_grant_order_no')
|
|
471
|
+
|
|
472
|
+
def to_map(self):
|
|
473
|
+
_map = super().to_map()
|
|
474
|
+
if _map is not None:
|
|
475
|
+
return _map
|
|
476
|
+
|
|
477
|
+
result = dict()
|
|
478
|
+
if self.auth_token is not None:
|
|
479
|
+
result['auth_token'] = self.auth_token
|
|
480
|
+
if self.product_instance_id is not None:
|
|
481
|
+
result['product_instance_id'] = self.product_instance_id
|
|
482
|
+
if self.out_grant_order_no is not None:
|
|
483
|
+
result['out_grant_order_no'] = self.out_grant_order_no
|
|
484
|
+
return result
|
|
485
|
+
|
|
486
|
+
def from_map(self, m: dict = None):
|
|
487
|
+
m = m or dict()
|
|
488
|
+
if m.get('auth_token') is not None:
|
|
489
|
+
self.auth_token = m.get('auth_token')
|
|
490
|
+
if m.get('product_instance_id') is not None:
|
|
491
|
+
self.product_instance_id = m.get('product_instance_id')
|
|
492
|
+
if m.get('out_grant_order_no') is not None:
|
|
493
|
+
self.out_grant_order_no = m.get('out_grant_order_no')
|
|
494
|
+
return self
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
class QueryRightsprodGrantResponse(TeaModel):
|
|
498
|
+
def __init__(
|
|
499
|
+
self,
|
|
500
|
+
req_msg_id: str = None,
|
|
501
|
+
result_code: str = None,
|
|
502
|
+
result_msg: str = None,
|
|
503
|
+
rights_grant_result: RightsGrantResultVO = None,
|
|
504
|
+
):
|
|
505
|
+
# 请求唯一ID,用于链路跟踪和问题排查
|
|
506
|
+
self.req_msg_id = req_msg_id
|
|
507
|
+
# 结果码,一般OK表示调用成功
|
|
508
|
+
self.result_code = result_code
|
|
509
|
+
# 异常信息的文本描述
|
|
510
|
+
self.result_msg = result_msg
|
|
511
|
+
# 权益发放结果
|
|
512
|
+
self.rights_grant_result = rights_grant_result
|
|
513
|
+
|
|
514
|
+
def validate(self):
|
|
515
|
+
if self.rights_grant_result:
|
|
516
|
+
self.rights_grant_result.validate()
|
|
517
|
+
|
|
518
|
+
def to_map(self):
|
|
519
|
+
_map = super().to_map()
|
|
520
|
+
if _map is not None:
|
|
521
|
+
return _map
|
|
522
|
+
|
|
523
|
+
result = dict()
|
|
524
|
+
if self.req_msg_id is not None:
|
|
525
|
+
result['req_msg_id'] = self.req_msg_id
|
|
526
|
+
if self.result_code is not None:
|
|
527
|
+
result['result_code'] = self.result_code
|
|
528
|
+
if self.result_msg is not None:
|
|
529
|
+
result['result_msg'] = self.result_msg
|
|
530
|
+
if self.rights_grant_result is not None:
|
|
531
|
+
result['rights_grant_result'] = self.rights_grant_result.to_map()
|
|
532
|
+
return result
|
|
533
|
+
|
|
534
|
+
def from_map(self, m: dict = None):
|
|
535
|
+
m = m or dict()
|
|
536
|
+
if m.get('req_msg_id') is not None:
|
|
537
|
+
self.req_msg_id = m.get('req_msg_id')
|
|
538
|
+
if m.get('result_code') is not None:
|
|
539
|
+
self.result_code = m.get('result_code')
|
|
540
|
+
if m.get('result_msg') is not None:
|
|
541
|
+
self.result_msg = m.get('result_msg')
|
|
542
|
+
if m.get('rights_grant_result') is not None:
|
|
543
|
+
temp_model = RightsGrantResultVO()
|
|
544
|
+
self.rights_grant_result = temp_model.from_map(m['rights_grant_result'])
|
|
545
|
+
return self
|
|
546
|
+
|
|
547
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
Licensed to the Apache Software Foundation (ASF) under one
|
|
4
|
+
or more contributor license agreements. See the NOTICE file
|
|
5
|
+
distributed with this work for additional information
|
|
6
|
+
regarding copyright ownership. The ASF licenses this file
|
|
7
|
+
to you under the Apache License, Version 2.0 (the
|
|
8
|
+
"License"); you may not use this file except in compliance
|
|
9
|
+
with the License. You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing,
|
|
14
|
+
software distributed under the License is distributed on an
|
|
15
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
+
KIND, either express or implied. See the License for the
|
|
17
|
+
specific language governing permissions and limitations
|
|
18
|
+
under the License.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
import os
|
|
22
|
+
from setuptools import setup, find_packages
|
|
23
|
+
|
|
24
|
+
"""
|
|
25
|
+
setup module for antchain_gesaas.
|
|
26
|
+
|
|
27
|
+
Created on 24/07/2025
|
|
28
|
+
|
|
29
|
+
@author: Ant Chain SDK
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
PACKAGE = "antchain_sdk_gesaas"
|
|
33
|
+
NAME = "antchain_gesaas" or "alibabacloud-package"
|
|
34
|
+
DESCRIPTION = "Ant Chain GESAAS SDK Library for Python"
|
|
35
|
+
AUTHOR = "Ant Chain SDK"
|
|
36
|
+
AUTHOR_EMAIL = "sdk-team@alibabacloud.com"
|
|
37
|
+
URL = "https://github.com/alipay/antchain-openapi-prod-sdk"
|
|
38
|
+
VERSION = __import__(PACKAGE).__version__
|
|
39
|
+
REQUIRES = [
|
|
40
|
+
"antchain_alipay_util>=1.0.1, <2.0.0",
|
|
41
|
+
"alibabacloud_tea_util>=0.3.13, <1.0.0",
|
|
42
|
+
"alibabacloud_rpc_util>=0.0.4, <1.0.0"
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
LONG_DESCRIPTION = ''
|
|
46
|
+
if os.path.exists('./README.md'):
|
|
47
|
+
with open("README.md", encoding='utf-8') as fp:
|
|
48
|
+
LONG_DESCRIPTION = fp.read()
|
|
49
|
+
|
|
50
|
+
setup(
|
|
51
|
+
name=NAME,
|
|
52
|
+
version=VERSION,
|
|
53
|
+
description=DESCRIPTION,
|
|
54
|
+
long_description=LONG_DESCRIPTION,
|
|
55
|
+
long_description_content_type='text/markdown',
|
|
56
|
+
author=AUTHOR,
|
|
57
|
+
author_email=AUTHOR_EMAIL,
|
|
58
|
+
license="Apache License 2.0",
|
|
59
|
+
url=URL,
|
|
60
|
+
keywords=["antchain","gesaas"],
|
|
61
|
+
packages=find_packages(exclude=["tests*"]),
|
|
62
|
+
include_package_data=True,
|
|
63
|
+
platforms="any",
|
|
64
|
+
install_requires=REQUIRES,
|
|
65
|
+
python_requires=">=3.6",
|
|
66
|
+
classifiers=(
|
|
67
|
+
"Development Status :: 4 - Beta",
|
|
68
|
+
"Intended Audience :: Developers",
|
|
69
|
+
"License :: OSI Approved :: Apache Software License",
|
|
70
|
+
"Programming Language :: Python",
|
|
71
|
+
"Programming Language :: Python :: 3",
|
|
72
|
+
"Programming Language :: Python :: 3.6",
|
|
73
|
+
'Programming Language :: Python :: 3.7',
|
|
74
|
+
'Programming Language :: Python :: 3.8',
|
|
75
|
+
'Programming Language :: Python :: 3.9',
|
|
76
|
+
"Topic :: Software Development"
|
|
77
|
+
)
|
|
78
|
+
)
|