tencentcloud-sdk-common 3.0.995 → 3.0.996
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b8c1ce4efb874bd66b131389321bf139731e96d
|
4
|
+
data.tar.gz: 4d933f12882ede9156daf8b49c53c36c3be568bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3102a81eb411bd413dcdacd9accfcdabb5bef46e5d0d4912f0ce049342c052222cf3cbf5652fe350247587e5a8d892a2e20c24b47f11ac08e19778b5010cdda1
|
7
|
+
data.tar.gz: 4231f024d96e524ccd32cbba4c1a29cc101f306419646f81ed0b6d80502465faecb5d084771fe840e432e5d408f314835513e29ad08e08379062c3af1f9fffcf
|
data/lib/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.996
|
@@ -13,8 +13,6 @@ module TencentCloud
|
|
13
13
|
include Log
|
14
14
|
|
15
15
|
def initialize(credential, region, api_version, api_endpoint, sdk_version, profile = nil)
|
16
|
-
raise TencentCloudSDKException.new('InvalidCredential', 'Credential is None or invalid') unless credential
|
17
|
-
|
18
16
|
@credential = credential
|
19
17
|
@region = region
|
20
18
|
@api_version = api_version
|
@@ -85,7 +83,6 @@ module TencentCloud
|
|
85
83
|
req.header['X-TC-Version'] = @api_version
|
86
84
|
req.header['X-TC-Region'] = @region
|
87
85
|
req.header['X-TC-Language'] = @profile.language
|
88
|
-
req.header['X-TC-Token'] = @credential.token if @credential.token
|
89
86
|
req.header['X-TC-Content-SHA256'] = 'UNSIGNED-PAYLOAD' if @profile.unsigned_payload
|
90
87
|
req.header['X-TC-TraceId'] = SecureRandom.uuid
|
91
88
|
if req.method == 'GET'
|
@@ -128,9 +125,15 @@ module TencentCloud
|
|
128
125
|
payload = 'UNSIGNED-PAYLOAD' if @profile.unsigned_payload
|
129
126
|
hashed_payload = Digest::SHA256.hexdigest(payload)
|
130
127
|
|
131
|
-
|
132
|
-
|
133
|
-
|
128
|
+
if @credential.nil?
|
129
|
+
authorization = "SKIP"
|
130
|
+
else
|
131
|
+
secret_id, secret_key, token = @credential.credential
|
132
|
+
authorization = Sign.sign_v3(content_type, endpoint, @profile.http_profile.req_method, req.uri,
|
133
|
+
canonical_querystring, hashed_payload, req.header['X-TC-Timestamp'],
|
134
|
+
secret_id, secret_key)
|
135
|
+
req.header['X-TC-Token'] = token if token
|
136
|
+
end
|
134
137
|
req.header['Authorization'] = authorization
|
135
138
|
end
|
136
139
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module TencentCloud
|
5
|
+
module Common
|
6
|
+
class OIDCCredential
|
7
|
+
SES_NAME = 'tencentcloud-ruby-sdk-'
|
8
|
+
SES_DUR = 7200
|
9
|
+
API_VERSION = '2018-08-13'
|
10
|
+
API_ENDPOINT = 'sts.tencentcloudapi.com'
|
11
|
+
API_ACTION = 'AssumeRoleWithWebIdentity'
|
12
|
+
SDK_VERSION = 'CLB_' + File.read(File.expand_path('../VERSION', __dir__)).strip
|
13
|
+
|
14
|
+
attr_accessor :secret_id, :secret_key, :token
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@expire_t = 0
|
18
|
+
initialize_args
|
19
|
+
end
|
20
|
+
|
21
|
+
def credential
|
22
|
+
refresh
|
23
|
+
[@secret_id, @secret_key, @token]
|
24
|
+
end
|
25
|
+
|
26
|
+
def initialize_args
|
27
|
+
@region = ENV['TKE_REGION']
|
28
|
+
@provider_id = ENV['TKE_PROVIDER_ID']
|
29
|
+
token_file = ENV['TKE_WEB_IDENTITY_TOKEN_FILE']
|
30
|
+
@role_arn = ENV['TKE_ROLE_ARN']
|
31
|
+
@ses_name = SES_NAME + (Time.now.to_r * 1_000).to_i.to_s
|
32
|
+
@ses_dur = SES_DUR
|
33
|
+
|
34
|
+
if @region.nil? || @provider_id.nil? || token_file.nil? || @role_arn.nil? || @ses_name.nil? || @ses_dur.nil?
|
35
|
+
raise TencentCloudSDKException.new('InvalidCredential', 'env TKE_REGION, TKE_PROVIDER_ID, TKE_WEB_IDENTITY_TOKEN_FILE, TKE_ROLE_ARN not exist')
|
36
|
+
end
|
37
|
+
|
38
|
+
@token = File.read(token_file).strip
|
39
|
+
end
|
40
|
+
|
41
|
+
def refresh
|
42
|
+
if @expire_t - Time.now.to_i > SES_DUR / 10
|
43
|
+
return
|
44
|
+
end
|
45
|
+
|
46
|
+
initialize_args
|
47
|
+
|
48
|
+
client = AbstractClient.new(nil, @region, API_VERSION, API_ENDPOINT, SDK_VERSION, nil)
|
49
|
+
|
50
|
+
req = {
|
51
|
+
'ProviderId': @provider_id,
|
52
|
+
'WebIdentityToken': @token,
|
53
|
+
'RoleArn': @role_arn,
|
54
|
+
'RoleSessionName': @ses_name,
|
55
|
+
'DurationSeconds': @ses_dur,
|
56
|
+
}
|
57
|
+
response = JSON.parse(client.send_request(API_ACTION, req))
|
58
|
+
if response['Response'].key?('Error')
|
59
|
+
code = response['Response']['Error']['Code']
|
60
|
+
message = response['Response']['Error']['Message']
|
61
|
+
reqid = response['Response']['RequestId']
|
62
|
+
raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
|
63
|
+
end
|
64
|
+
|
65
|
+
@secret_id = response['Response']['Credentials']['TmpSecretId']
|
66
|
+
@secret_key = response['Response']['Credentials']['TmpSecretKey']
|
67
|
+
@token = response['Response']['Credentials']['Token']
|
68
|
+
@expire_t = response['Response']['ExpiredTime']
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -9,6 +9,7 @@ require_relative 'tencentcloud-sdk-common/models'
|
|
9
9
|
require_relative 'tencentcloud-sdk-common/sign'
|
10
10
|
require_relative 'tencentcloud-sdk-common/http/request'
|
11
11
|
require_relative 'tencentcloud-sdk-common/client'
|
12
|
+
require_relative 'tencentcloud-sdk-common/oidc_credential'
|
12
13
|
|
13
14
|
module TencentCloud
|
14
15
|
# sdk common module
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tencentcloud-sdk-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.996
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tencent Cloud
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Tencent Cloud Ruby SDK is the official software development kit, which
|
14
14
|
allows Ruby developers to write software that makes use of Tencent Cloud service.
|
@@ -26,6 +26,7 @@ files:
|
|
26
26
|
- lib/tencentcloud-sdk-common/log.rb
|
27
27
|
- lib/tencentcloud-sdk-common/exception.rb
|
28
28
|
- lib/tencentcloud-sdk-common/credential.rb
|
29
|
+
- lib/tencentcloud-sdk-common/oidc_credential.rb
|
29
30
|
- lib/tencentcloud-sdk-common/models.rb
|
30
31
|
- lib/tencentcloud-sdk-common/client.rb
|
31
32
|
- lib/VERSION
|