Module: Aliyun::Vms
- Defined in:
- lib/aliyun/vms.rb,
lib/aliyun/vms/version.rb
Defined Under Namespace
Classes: Configuration
Constant Summary collapse
- VERSION =
"0.0.1"
Class Attribute Summary collapse
Class Method Summary collapse
- .canonicalized_query_string(params) ⇒ Object
- .config_params ⇒ Object
- .configure {|configuration| ... } ⇒ Object
-
.encode(input) ⇒ Object
对字符串进行 PERCENT 编码.
- .get_params(user_params) ⇒ Object
- .get_url(user_params) ⇒ Object
-
.seed_signature_nonce ⇒ Object
生成语音唯一标识码,采用到微秒的时间戳.
-
.seed_timestamp ⇒ Object
生成语音时间戳.
- .send(called_show_number, called_number, tts_code, tts_param, out_id = '') ⇒ Object
-
.sign(key_secret, coded_params) ⇒ Object
生成数字签名.
-
.test_query_string(params) ⇒ Object
测试参数未编码时生成的字符串是否正确(多一道保险).
Class Attribute Details
.configuration ⇒ Object
29 30 31 |
# File 'lib/aliyun/vms.rb', line 29 def configuration @configuration ||= Configuration.new end |
Class Method Details
.canonicalized_query_string(params) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/aliyun/vms.rb', line 72 def canonicalized_query_string(params) cqstring = '' params.sort_by{|key, val| key}.each do |key, value| if cqstring.empty? cqstring += "#{encode(key)}=#{encode(value)}" else cqstring += "&#{encode(key)}=#{encode(value)}" end end cqstring end |
.config_params ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/aliyun/vms.rb', line 60 def config_params() params ={ 'AccessKeyId' => configuration.access_key_id, 'Action' => configuration.action, 'Format' => configuration.format, 'RegionId' => configuration.region_id, 'SignatureMethod' => configuration.signature_method, 'SignatureVersion' => configuration.signature_version, 'Version' => configuration.version } end |
.configure {|configuration| ... } ⇒ Object
33 34 35 |
# File 'lib/aliyun/vms.rb', line 33 def configure yield(configuration) end |
.encode(input) ⇒ Object
对字符串进行 PERCENT 编码
93 94 95 |
# File 'lib/aliyun/vms.rb', line 93 def encode(input) output = url_encode(input) end |
.get_params(user_params) ⇒ Object
56 57 58 |
# File 'lib/aliyun/vms.rb', line 56 def get_params(user_params) params = config_params.merge(user_params) end |
.get_url(user_params) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/aliyun/vms.rb', line 49 def get_url(user_params) params = get_params(user_params) coded_params = canonicalized_query_string(params) key_secret = configuration.access_key_secret url = 'http://dyvmsapi.aliyuncs.com/?' + 'Signature=' + sign(key_secret, coded_params) + '&' + coded_params end |
.seed_signature_nonce ⇒ Object
生成语音唯一标识码,采用到微秒的时间戳
103 104 105 |
# File 'lib/aliyun/vms.rb', line 103 def seed_signature_nonce Time.now.utc.strftime("%Y%m%d%H%M%S%L") end |
.seed_timestamp ⇒ Object
生成语音时间戳
98 99 100 |
# File 'lib/aliyun/vms.rb', line 98 def Time.now.utc.strftime("%FT%TZ") end |
.send(called_show_number, called_number, tts_code, tts_param, out_id = '') ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/aliyun/vms.rb', line 37 def send(called_show_number, called_number, tts_code, tts_param, out_id = '') Typhoeus.get(get_url({ 'CalledShowNumber' => called_show_number, 'CalledNumber' => called_number, 'TtsCode' => tts_code, 'TtsParam' => tts_param, 'OutId' => out_id, 'SignatureNonce' => seed_signature_nonce, 'Timestamp' => })) end |
.sign(key_secret, coded_params) ⇒ Object
生成数字签名
85 86 87 88 89 90 |
# File 'lib/aliyun/vms.rb', line 85 def sign(key_secret, coded_params) key = key_secret + '&' signature = 'GET' + '&' + encode('/') + '&' + encode(coded_params) sign = Base64.encode64("#{OpenSSL::HMAC.digest('sha1',key, signature)}") encode(sign.chomp) # 通过chomp去掉最后的换行符 LF end |
.test_query_string(params) ⇒ Object
测试参数未编码时生成的字符串是否正确(多一道保险)
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/aliyun/vms.rb', line 108 def test_query_string(params) qstring = '' params.sort_by{|key, val| key}.each do |key, value| if qstring.empty? qstring += "#{key}=#{value}" else qstring += "&#{key}=#{value}" end end qstring end |