Skip to content

Commit 96027c8

Browse files
committed
fix(core): fix
1 parent 9990c31 commit 96027c8

15 files changed

+143
-119
lines changed
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
# coding=utf-8
22
class Credential(object):
3-
"""凭证管理类"""
43

54
def __init__(self, provider):
65
self.provider = provider
76

87
def get(self):
98
if self.provider.is_expired():
10-
# 当凭证过期时自动刷新
9+
# refresh if expired
1110
self.provider.refresh()
1211
return self.provider.retrieve()

volcenginesdkcore/auth/providers/provider.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,12 @@ class Provider(object):
1414

1515
@abc.abstractmethod
1616
def retrieve(self):
17-
"""获取凭证"""
1817
raise NotImplementedError()
1918

2019
@abc.abstractmethod
2120
def is_expired(self):
22-
"""判断凭证是否过期"""
2321
raise NotImplementedError()
2422

2523
@abc.abstractmethod
2624
def refresh(self):
27-
"""刷新凭证"""
2825
raise NotImplementedError()

volcenginesdkcore/auth/providers/static_provider.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44

55
class StaticCredentialProvider(Provider):
6-
"""静态凭证提供者"""
76

87
def _refresh(self):
98
return

volcenginesdkcore/auth/providers/sts_provider.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ def is_expired(self):
5151

5252
def refresh(self):
5353
with self._lock:
54-
self._assume_role()
54+
if self.is_expired():
55+
self._assume_role()
5556

5657
def _assume_role(self):
5758
params = {
@@ -64,13 +65,15 @@ def _assume_role(self):
6465
configuration.sk = self.sk
6566
configuration.host = self.host
6667
configuration.region = self.region
67-
configuration.schema = self.scheme
68+
configuration.scheme = self.scheme
6869
configuration.read_timeout = self.timeout
6970
c = UniversalApi(ApiClient(configuration))
7071
info = UniversalInfo(method='GET', service='sts', version='2018-01-01', action='AssumeRole',
7172
content_type='text/plain')
7273

7374
resp, status_code, resp_header = c.do_call_with_http_info(info=info, body=params)
75+
if 'Credentials' not in resp:
76+
raise RuntimeError('failed to retrieve credentials from sts' + str(resp_header))
7477
resp_cred = resp['Credentials']
7578

7679
# Parse the ISO string

volcenginesdkcore/configuration.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import logging
77
import multiprocessing
88
import sys
9+
import warnings
910

1011
import six
1112
from six.moves import http_client as httplib
@@ -34,13 +35,31 @@ class Configuration(six.with_metaclass(TypeWithDefault, object)):
3435
Do not edit the class manually.
3536
"""
3637

38+
@property
39+
def schema(self):
40+
warnings.warn(
41+
"The field 'schema' is deprecated and will be removed in future versions. Use 'scheme' instead.",
42+
DeprecationWarning,
43+
stacklevel=2
44+
)
45+
return self.scheme
46+
47+
@schema.setter
48+
def schema(self, value):
49+
warnings.warn(
50+
"The field 'schema' is deprecated and will be removed in future versions. Use 'scheme' instead.",
51+
DeprecationWarning,
52+
stacklevel=2
53+
)
54+
self.scheme = value
55+
3756
def __init__(self):
3857
"""Constructor"""
3958

4059
# Default Base url
4160
self.host = None
42-
# Schema Support http or https
43-
self.schema = "http"
61+
# Scheme Support http or https
62+
self.scheme = "http"
4463
# Temp file folder for downloading files
4564
self.temp_folder_path = None
4665

@@ -88,8 +107,8 @@ def __init__(self):
88107

89108
self.num_pools = 4
90109

91-
self.connect_timeout = 60.0
92-
self.read_timeout = 60.0
110+
self.connect_timeout = 30.0
111+
self.read_timeout = 30.0
93112

94113
# urllib3 connection pool's maximum number of connections saved
95114
# per pool. urllib3 uses 1 connection as default value, but this is
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from .chain import InterceptorChain
2-
3-
from .interceptors.common_request import SignRequestInterceptor, BuildRequestInterceptor, RuntimeOptionsInterceptor, \
4-
ResolveEndpointInterceptor
5-
from .interceptors.common_response import DeserializedResponseInterceptor
2+
from .interceptors import SignRequestInterceptor, BuildRequestInterceptor, ResolveEndpointInterceptor
63
from .interceptors.context import InterceptorContext
4+
from .interceptors.deserialized_response_interceptor import DeserializedResponseInterceptor
75
from .interceptors.interceptor import RequestInterceptor, ResponseInterceptor
86
from .interceptors.request import Request, RuntimeOption
97
from .interceptors.response import Response
8+
from .interceptors.runtime_options_interceptor import RuntimeOptionsInterceptor
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
from .common_request import SignRequestInterceptor, BuildRequestInterceptor, RuntimeOptionsInterceptor, \
2-
ResolveEndpointInterceptor
3-
from .common_response import DeserializedResponseInterceptor
4-
1+
from .build_request_interceptor import BuildRequestInterceptor
52
from .context import InterceptorContext
3+
from .deserialized_response_interceptor import DeserializedResponseInterceptor
64
from .interceptor import RequestInterceptor, ResponseInterceptor
75
from .request import Request, RuntimeOption
6+
from .resolve_endpoint_interceptor import ResolveEndpointInterceptor
87
from .response import Response
8+
from .runtime_options_interceptor import RuntimeOptionsInterceptor
9+
from .sign_request_interceptor import SignRequestInterceptor

volcenginesdkcore/interceptor/interceptors/common_request.py renamed to volcenginesdkcore/interceptor/interceptors/build_request_interceptor.py

Lines changed: 1 addition & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,13 @@
1-
# coding=utf-8
21
import datetime
3-
import json
42
import mimetypes
53
import os
4+
from urllib.parse import quote
65

76
import six
8-
from six.moves.urllib.parse import quote
9-
from urllib3 import Timeout
107

11-
from volcenginesdkcore.signv4 import SignerV4
128
from .interceptor import RequestInterceptor
139

1410

15-
class SignRequestInterceptor(RequestInterceptor):
16-
"""SDK通用请求拦截器"""
17-
18-
def name(self):
19-
return 'volcengine-sign-request-interceptor'
20-
21-
def intercept(self, context):
22-
self.update_params_for_auth(host=context.request.host, path=context.request.true_path,
23-
method=context.request.method,
24-
headers=context.request.header_params,
25-
querys=context.request.query_params,
26-
auth_settings=context.request.auth_settings,
27-
body=context.request.body,
28-
post_params=context.request.post_params,
29-
service=context.request.service,
30-
ak=context.request.ak,
31-
sk=context.request.sk,
32-
session_token=context.request.session_token,
33-
region=context.request.region)
34-
return context
35-
36-
@staticmethod
37-
def update_params_for_auth(host, path, method, headers, querys, auth_settings, body, post_params, service, ak,
38-
sk, session_token, region):
39-
if not auth_settings:
40-
return
41-
42-
for auth in auth_settings:
43-
headers["Host"] = host
44-
if method in ["POST", "PUT", "DELETE", "PATCH"]:
45-
body = json.dumps(body)
46-
else:
47-
body = ""
48-
SignerV4.sign(path, method, headers, body, post_params, querys,
49-
ak, sk, session_token,
50-
region, service)
51-
52-
5311
def parameters_to_tuples(params, collection_formats):
5412
"""Get parameters as list of tuples, formatting collections.
5513
@@ -239,56 +197,3 @@ def __req_to_params(self, req, prefix="", params=None):
239197
params.append((prefix + key, value))
240198

241199
return params
242-
243-
244-
class ResolveEndpointInterceptor(RequestInterceptor):
245-
"""SDK通用请求拦截器"""
246-
247-
def name(self):
248-
return 'volcengine-resolve-endpoint-interceptor'
249-
250-
def intercept(self, context):
251-
host = context.request.host
252-
scheme = context.request.scheme
253-
if not host:
254-
service = context.request.resource_path.split('/')[3]
255-
endpoint_resolver = context.request.endpoint_provider.endpoint_for(
256-
service, context.request.region)
257-
context.request.host = endpoint_resolver.host
258-
prefix = endpoint_resolver.url_for(scheme)
259-
else:
260-
prefix = scheme + '://' + host
261-
context.request.url = prefix + context.request.true_path
262-
263-
return context
264-
265-
266-
class RuntimeOptionsInterceptor(RequestInterceptor):
267-
"""SDK通用请求拦截器"""
268-
269-
def name(self):
270-
return 'volcengine-runtime-options-interceptor'
271-
272-
def intercept(self, context):
273-
opt = context.request.runtime_options
274-
if not opt:
275-
return context
276-
277-
context.request.ak = opt.ak if opt.ak is not None else context.request.ak
278-
context.request.sk = opt.sk if opt.sk is not None else context.request.sk
279-
context.request.session_token = opt.session_token \
280-
if opt.session_token is not None else context.request.session_token
281-
context.request.region = opt.region if opt.region is not None else context.request.region
282-
context.request.scheme = opt.scheme if opt.scheme is not None else context.request.scheme
283-
284-
if opt.connect_timeout is not None or opt.read_timeout is not None:
285-
context.request.request_timeout = Timeout(
286-
connect=opt.connect_timeout if opt.connect_timeout is not None else -1,
287-
read=opt.read_timeout if opt.read_timeout is not None else -1,
288-
)
289-
290-
if opt.endpoint_provider is not None:
291-
context.request.endpoint_provider = opt.endpoint_provider
292-
context.request.host = None
293-
294-
return context

volcenginesdkcore/interceptor/interceptors/common_response.py renamed to volcenginesdkcore/interceptor/interceptors/deserialized_response_interceptor.py

File renamed without changes.

volcenginesdkcore/interceptor/interceptors/request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def __init__(
4444
self.sk = configuration.sk
4545
self.session_token = configuration.session_token
4646
self.region = configuration.region
47-
self.scheme = configuration.schema
47+
self.scheme = configuration.scheme
4848
self.endpoint_provider = configuration.endpoint_provider
4949

5050
self.runtime_options = None

0 commit comments

Comments
 (0)