aliyun_sdk_ruby 0.1.0
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 +7 -0
- data/README.md +31 -0
- data/lib/aliyun_sdk/api/id2_meta_verify.rb +64 -0
- data/lib/aliyun_sdk/client.rb +42 -0
- data/lib/aliyun_sdk/config.rb +15 -0
- data/lib/aliyun_sdk/signer.rb +20 -0
- data/lib/aliyun_sdk/version.rb +3 -0
- data/lib/aliyun_sdk.rb +5 -0
- metadata +61 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8bed4b56791366406f79295ff0b1d3e8e41c572ef9f0e445dde097f9a619c9fb
|
4
|
+
data.tar.gz: e761bcdd4f891c3521a798361b2d80ef3e817a308ceeb4c18ae36b0a217b82bb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d3e9f310632584d8c5387c68c2a4a37531e0dd27944f333b66d81e581f62d80cbb2d78045eecc0fb4aa1075283263bedc0e933c1a09d6d18517cd8974ecf97eb
|
7
|
+
data.tar.gz: 0d4026f7ea632b10cb7ba5242184c96989ac288cd2e6c1b3e42f524460549a42adbbe1e72dac5a74ef658ee6a81a48781d95b141ad2f3f355931380ff6c820a2
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# AliyunSDK (基础通用 Ruby SDK)
|
2
|
+
|
3
|
+
## 安装
|
4
|
+
|
5
|
+
添加到 Gemfile:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
gem 'aliyun_sdk', github: "daqing/aliyun_sdk"
|
9
|
+
```
|
10
|
+
|
11
|
+
## 使用方法
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
require 'aliyun_sdk'
|
15
|
+
|
16
|
+
config = AliyunSDK::Config.new(
|
17
|
+
access_key_id: "YourAccessKeyID",
|
18
|
+
access_key_secret: "YourAccessKeySecret"
|
19
|
+
)
|
20
|
+
|
21
|
+
client = AliyunSDK::Client.new(config)
|
22
|
+
|
23
|
+
api = AliyunSDK::API::Id2MetaVerify.new("张三", "370503199922113344")
|
24
|
+
response = client.request(api)
|
25
|
+
|
26
|
+
puts response
|
27
|
+
```
|
28
|
+
|
29
|
+
---
|
30
|
+
|
31
|
+
本 SDK 仅实现基础签名和请求封装,适合自定义扩展。
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module AliyunSDK
|
2
|
+
module API
|
3
|
+
# 实人认证 - 身份二要素核验
|
4
|
+
#
|
5
|
+
# API 返回结果:
|
6
|
+
#
|
7
|
+
# 姓名和身份证匹配:
|
8
|
+
# {
|
9
|
+
# "ResultObject" => {"BizCode" => "1"},
|
10
|
+
# "RequestId" => "4924E5D4-874C-5062-9E37-992D85EDDFAE",
|
11
|
+
# "Message" => "success",
|
12
|
+
# "Code" => "200"
|
13
|
+
# }
|
14
|
+
#
|
15
|
+
# 姓名和身份证不匹配:
|
16
|
+
# {
|
17
|
+
# "ResultObject" => {"BizCode" => "2"},
|
18
|
+
# "RequestId" => "7CB9FE8B-8A9F-5E49-8C17-4DD4B1C724A2",
|
19
|
+
# "Message" => "success",
|
20
|
+
# "Code" => "200"
|
21
|
+
# }
|
22
|
+
#
|
23
|
+
# 身份证非法:
|
24
|
+
# {
|
25
|
+
# "RequestId" => "24394B83-EE10-5C5F-A0BC-FBC680A694A4",
|
26
|
+
# "HostId" => "cloudauth.cn-hangzhou.aliyuncs.com",
|
27
|
+
# "Code" => "401",
|
28
|
+
# "Message" => "参数非法(identifyNum)",
|
29
|
+
# "Recommend" => "https://api.aliyun.com/troubleshoot?q=401&product=Cloudauth&requestId=24394B83-EE10-5C5F-A0BC-FBC680A694A4"
|
30
|
+
# }
|
31
|
+
class Id2MetaVerify
|
32
|
+
# @param username [String] 姓名
|
33
|
+
# @param id_number [String] 身份证号
|
34
|
+
def initialize(username, id_number)
|
35
|
+
@username = username
|
36
|
+
@id_number = id_number
|
37
|
+
end
|
38
|
+
|
39
|
+
def request_action
|
40
|
+
"Id2MetaVerify"
|
41
|
+
end
|
42
|
+
|
43
|
+
def request_method
|
44
|
+
"POST"
|
45
|
+
end
|
46
|
+
|
47
|
+
def request_params
|
48
|
+
{
|
49
|
+
"ParamType" => "normal",
|
50
|
+
"IdentifyNum" => @id_number,
|
51
|
+
"UserName" => @username
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
def request_endpoint
|
56
|
+
"cloudauth.cn-hangzhou.aliyuncs.com"
|
57
|
+
end
|
58
|
+
|
59
|
+
def request_version
|
60
|
+
"2019-03-07"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "rest-client"
|
2
|
+
require "json"
|
3
|
+
require "securerandom"
|
4
|
+
require_relative "config"
|
5
|
+
require_relative "signer"
|
6
|
+
|
7
|
+
module AliyunSDK
|
8
|
+
class Client
|
9
|
+
def initialize(config)
|
10
|
+
@config = config
|
11
|
+
end
|
12
|
+
|
13
|
+
def request(api)
|
14
|
+
public_params = {
|
15
|
+
"Format" => "JSON",
|
16
|
+
"Version" => api.request_version,
|
17
|
+
"AccessKeyId" => @config.access_key_id,
|
18
|
+
"SignatureMethod" => "HMAC-SHA1",
|
19
|
+
"Timestamp" => Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
|
20
|
+
"SignatureVersion" => "1.0",
|
21
|
+
"SignatureNonce" => SecureRandom.uuid,
|
22
|
+
"Action" => api.request_action,
|
23
|
+
"RegionId" => @config.region_id
|
24
|
+
}
|
25
|
+
|
26
|
+
method = api.request_method
|
27
|
+
all_params = public_params.merge(api.request_params)
|
28
|
+
signature = Signer.sign(all_params, @config.access_key_secret, method)
|
29
|
+
all_params["Signature"] = signature
|
30
|
+
|
31
|
+
endpoint = api.request_endpoint
|
32
|
+
response = if method == "GET"
|
33
|
+
RestClient.get("https://#{endpoint}", { params: all_params })
|
34
|
+
else
|
35
|
+
RestClient.post("https://#{endpoint}", all_params)
|
36
|
+
end
|
37
|
+
JSON.parse(response.body)
|
38
|
+
rescue RestClient::ExceptionWithResponse => e
|
39
|
+
{ "error" => e.response }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module AliyunSDK
|
2
|
+
class Config
|
3
|
+
DEFAULT_REGION = "cn-hangzhou".freeze
|
4
|
+
|
5
|
+
attr_reader :access_key_id, :access_key_secret, :region_id
|
6
|
+
|
7
|
+
# @param access_key_id [String]
|
8
|
+
# @param access_key_secret [String]
|
9
|
+
def initialize(access_key_id:, access_key_secret:)
|
10
|
+
@access_key_id = access_key_id
|
11
|
+
@access_key_secret = access_key_secret
|
12
|
+
@region_id = DEFAULT_REGION
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "openssl"
|
2
|
+
require "base64"
|
3
|
+
require "cgi"
|
4
|
+
|
5
|
+
module AliyunSDK
|
6
|
+
class Signer
|
7
|
+
def self.sign(params, access_key_secret, http_method = "GET")
|
8
|
+
sorted = params.sort.to_h
|
9
|
+
canonicalized = sorted.map { |k, v| "#{percent_encode(k)}=#{percent_encode(v)}" }.join("&")
|
10
|
+
string_to_sign = "#{http_method.upcase}&%2F&" + percent_encode(canonicalized)
|
11
|
+
key = "#{access_key_secret}&"
|
12
|
+
digest = OpenSSL::HMAC.digest("sha1", key, string_to_sign)
|
13
|
+
Base64.strict_encode64(digest)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.percent_encode(str)
|
17
|
+
CGI.escape(str.to_s).gsub("+", "%20").gsub("*", "%2A").gsub("%7E", "~")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/aliyun_sdk.rb
ADDED
metadata
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aliyun_sdk_ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David Zhang
|
8
|
+
bindir: bin
|
9
|
+
cert_chain: []
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: rest-client
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '2.1'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '2.1'
|
26
|
+
description: Aliyun SDK for Ruby
|
27
|
+
email:
|
28
|
+
- daqing@mzevo.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- README.md
|
34
|
+
- lib/aliyun_sdk.rb
|
35
|
+
- lib/aliyun_sdk/api/id2_meta_verify.rb
|
36
|
+
- lib/aliyun_sdk/client.rb
|
37
|
+
- lib/aliyun_sdk/config.rb
|
38
|
+
- lib/aliyun_sdk/signer.rb
|
39
|
+
- lib/aliyun_sdk/version.rb
|
40
|
+
homepage: https://github.com/daqing/aliyun_sdk
|
41
|
+
licenses:
|
42
|
+
- MIT
|
43
|
+
metadata: {}
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '3.3'
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubygems_version: 3.6.7
|
59
|
+
specification_version: 4
|
60
|
+
summary: Aliyun Ruby SDK
|
61
|
+
test_files: []
|