tencentcloud-sdk-ruby 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47dcff18eb491fc54a7245fbde3797859ec7b83011c861000a647694a77a6896
4
- data.tar.gz: 7f7fa4e1f522f04e7adae9dcd4910f65bf7efd04632e921a8bdc83c816f0aa52
3
+ metadata.gz: a660b1a26fdbd2f0564ad8fd9dd2ca52b1a1dc57186f7bf0e8832eda35cab4e5
4
+ data.tar.gz: 1a382388800705f92ee23cf46127d67b1cc48e1b2a3f96d07a64c9347587102c
5
5
  SHA512:
6
- metadata.gz: 56adc3b2428d5108b27c1edc9ddae500dc0ee0ba92eda22c93bf68184c77b96559ff38b8c7cfb7939e6651f2e15c6b24d3c3513ff6ef62455e058777c37e3353
7
- data.tar.gz: 6eb392b2e55868edb8d500672ea4dd7a82715ef5c32a6a9cbf563427a45654770060feb11d6cee7e17bcd25c6217dd74779577c64d96746af0ec2703d086afef
6
+ metadata.gz: '09c0b042a6dfb3c4fc80995560ec8e69814b6d6c30d7fae93c9b4d21ba056b16b1fe34ade7cff0ad5ed756e6d1913c2b2c712bfbb6deef4c49d4190fa0b3bc3b'
7
+ data.tar.gz: 96ec85883076fec0694fcc19083d7beddd82d43ec21fab653cf94a8cca5a8430a2aff94a73a16f5072e22548268a0306d8ff38a712c18b59f00b5a3c6e2b3617
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module TencentCloud
6
+ class CaptchaClient
7
+ API_VERSION = '2019-07-22'
8
+ Action = 'DescribeCaptchaResult'
9
+ CaptchaType = 9
10
+ REQUEST_PATH = '/'
11
+ JSON_CONTENT = 'application/json'
12
+ MULTIPART_CONTENT = 'multipart/form-data'
13
+ FORM_URLENCODED_CONTENT = 'application/x-www-form-urlencoded'
14
+ ENDPOINT = 'captcha.tencentcloudapi.com'
15
+
16
+ def initialize(secret_id, secret_key)
17
+ @api_version = '2019-07-22'
18
+ @secret_id = secret_id
19
+ @secret_key = secret_key
20
+ @token = nil
21
+ @region = nil
22
+ end
23
+
24
+ def http_request(data)
25
+ uri = URI.parse("https://#{ENDPOINT}")
26
+ request = Net::HTTP::Post.new(uri.to_s)
27
+ request = build_req_with_v3_signature(Action, data, request, options = {})
28
+
29
+ Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
30
+ http.request request
31
+ end
32
+ end
33
+ def build_req_with_v3_signature(action, params, req, options = {})
34
+ content_type = JSON_CONTENT
35
+ timestamp = Time.current.to_i
36
+ header = {}
37
+ header['Content-Type'] = content_type
38
+ header['Host'] = ENDPOINT
39
+ header['X-TC-Action'] = action
40
+ header['X-TC-Timestamp'] = timestamp
41
+ header['X-TC-Version'] = @api_version
42
+ header['X-TC-Region'] = @region
43
+ header['X-TC-Token'] = @token if @token
44
+ req.body = JSON.generate(params, { 'ascii_only' => true, 'space' => ' ' })
45
+ payload = req.body
46
+ canonical_querystring = ''
47
+ hashed_payload = Digest::SHA256.hexdigest(payload)
48
+
49
+ authorization = sign_v3(content_type, ENDPOINT, 'POST', '/',
50
+ canonical_querystring, hashed_payload, header['X-TC-Timestamp'],
51
+ @secret_id, @secret_key)
52
+ header['Authorization'] = authorization
53
+ header.each do |k, v|
54
+ req[k] = v
55
+ end
56
+ req
57
+ end
58
+ def sign_v3(content_type, endpoint, method, uri, query, payload, timestamp, secret_id, secret_key)
59
+ canonical_headers = "content-type:#{content_type}\nhost:#{endpoint}\n"
60
+ signed_headers = 'content-type;host'
61
+ canonical_request = [
62
+ method,
63
+ uri,
64
+ query,
65
+ canonical_headers,
66
+ signed_headers,
67
+ payload,
68
+ ].join("\n")
69
+ service = endpoint.split('.')[0]
70
+
71
+ date = Time.at(timestamp).utc.strftime('%Y-%m-%d')
72
+ credential_scope = date + '/' + service + '/' + 'tc3_request'
73
+ algorithm = 'TC3-HMAC-SHA256'
74
+ hashed_request_payload = Digest::SHA256.hexdigest(canonical_request)
75
+ string_to_sign = [
76
+ algorithm,
77
+ timestamp,
78
+ credential_scope,
79
+ hashed_request_payload,
80
+ ].join("\n")
81
+
82
+ digest = OpenSSL::Digest.new('sha256')
83
+ secret_date = OpenSSL::HMAC.digest(digest, 'TC3' + secret_key, date)
84
+ secret_service = OpenSSL::HMAC.digest(digest, secret_date, service)
85
+ secret_signing = OpenSSL::HMAC.digest(digest, secret_service, 'tc3_request')
86
+ signature = OpenSSL::HMAC.hexdigest(digest, secret_signing, string_to_sign)
87
+ "#{algorithm} Credential=#{secret_id}/#{credential_scope}, SignedHeaders=#{signed_headers}, Signature=#{signature}"
88
+ end
89
+ def format_params(prefix = nil, params)
90
+ d = {}
91
+ case params
92
+ when Hash
93
+ params.each do |k, v|
94
+ key = prefix ? "#{prefix}.#{k}" : k.to_s
95
+ d.update(format_params(key, v))
96
+ end
97
+ when Array
98
+ params.each_with_index do |v, i|
99
+ key = prefix ? "#{prefix}.#{i}" : i.to_s
100
+ d.update(format_params(key, v))
101
+ end
102
+ else
103
+ d[prefix] = params
104
+ end
105
+ d
106
+ end
107
+ end
108
+ end
@@ -7,7 +7,7 @@ require 'tencent_cloud/common/http/sign'
7
7
  module TencentCloud
8
8
  module Common
9
9
  class BaseClient
10
- def initialize(credential, region)
10
+ def initialize(credential, region = nil)
11
11
  @credential = credential
12
12
  @region = region
13
13
  end
@@ -22,10 +22,13 @@ module TencentCloud
22
22
  headers = {
23
23
  'X-TC-Action' => action,
24
24
  'X-TC-Version' => self.class::API_VERSION,
25
- 'X-TC-Region' => @region,
26
25
  'X-TC-Timestamp' => Time.now.to_i
27
26
  }
28
- request = TencentCloud::Common::Http::Request.new @credential, self.class, headers: headers, body: JSON.generate(body, space: ' ')
27
+ headers['X-TC-Region'] = @region if @region
28
+ request = TencentCloud::Common::Http::Request.new @credential,
29
+ self.class,
30
+ headers: headers,
31
+ body: JSON.generate(body, space: ' ')
29
32
  request.run
30
33
  end
31
34
 
@@ -31,7 +31,11 @@ module TencentCloud
31
31
 
32
32
  # 文本分类
33
33
  # https://cloud.tencent.com/document/api/271/35496
34
- text_classification: 'TextClassification'
34
+ text_classification: 'TextClassification',
35
+
36
+ # 词法分析V2
37
+ # https://cloud.tencent.com/document/product/271/90611
38
+ parse_words: 'ParseWords'
35
39
  }.freeze
36
40
  end
37
41
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TencentCloud
4
- VERSION = '0.3.5'
4
+ VERSION = '0.3.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tencentcloud-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - FengCe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-20 00:00:00.000000000 Z
11
+ date: 2023-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -106,6 +106,7 @@ files:
106
106
  - examples/trtc/v20190722/describe_room_information.rb
107
107
  - examples/trtc/v20190722/start_mcu_mix_transcode.rb
108
108
  - lib/tencent_cloud.rb
109
+ - lib/tencent_cloud/captcha/v20190722/captcha_client.rb
109
110
  - lib/tencent_cloud/common/base_client.rb
110
111
  - lib/tencent_cloud/common/credential.rb
111
112
  - lib/tencent_cloud/common/exception/tencent_cloud_sdk_exception.rb
@@ -140,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
141
  - !ruby/object:Gem::Version
141
142
  version: '0'
142
143
  requirements: []
143
- rubygems_version: 3.2.15
144
+ rubygems_version: 3.4.13
144
145
  signing_key:
145
146
  specification_version: 4
146
147
  summary: 腾讯云开发者工具套件(SDK)3.0,SDK3.0是云 API3.0 平台的配套工具