Class: AliyunLive::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/aliyun_live.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(access_key_id, access_key_secret) ⇒ Client

Returns a new instance of Client.



18
19
20
21
# File 'lib/aliyun_live.rb', line 18

def initialize(access_key_id, access_key_secret)
  @access_key_id = access_key_id
  @access_key_secret = access_key_secret
end

Instance Attribute Details

#access_key_idObject (readonly)

Returns the value of attribute access_key_id.



16
17
18
# File 'lib/aliyun_live.rb', line 16

def access_key_id
  @access_key_id
end

#access_key_secretObject (readonly)

Returns the value of attribute access_key_secret.



16
17
18
# File 'lib/aliyun_live.rb', line 16

def access_key_secret
  @access_key_secret
end

Instance Method Details

#describeLiveStreamOnlineUserNum(domain_name, app_name = nil, stream_name = nil) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/aliyun_live.rb', line 31

def describeLiveStreamOnlineUserNum(domain_name, app_name = nil, stream_name = nil)
  params = {}
  params[:Action] = 'DescribeLiveStreamOnlineUserNum'
  params[:DomainName] = domain_name
  params[:AppName] = app_name unless app_name.nil?
  params[:StreamName] = stream_name unless stream_name.nil?

  http_get(params)
end

#describeLiveStreamsBlockList(domain_name) ⇒ Object



41
42
43
44
45
46
# File 'lib/aliyun_live.rb', line 41

def describeLiveStreamsBlockList(domain_name)
  params = {}
  params[:Action] = 'DescribeLiveStreamsBlockList'
  params[:DomainName] = domain_name
  http_get(params)
end

#describeLiveStreamsOnlineList(domain_name, app_name = nil) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/aliyun_live.rb', line 23

def describeLiveStreamsOnlineList(domain_name, app_name = nil)
  params = {}
  params[:Action] = 'DescribeLiveStreamsOnlineList'
  params[:DomainName] = domain_name
  params[:AppName] = app_name unless app_name.nil?
  http_get(params)
end

#forbidLiveStream(domain_name, app_name, stream_name, resume_time = nil) ⇒ Object



48
49
50
51
52
53
54
55
56
57
# File 'lib/aliyun_live.rb', line 48

def forbidLiveStream(domain_name, app_name, stream_name, resume_time = nil)
  params = {}
  params[:Action] = 'DescribeLiveStreamOnlineUserNum'
  params[:DomainName] = domain_name
  params[:AppName] = app_name
  params[:StreamName] = stream_name
  params[:ResumeTime] = resume_time unless resume_time.nil?
  params[:LiveStreamType] = 'publisher' 
  http_get(params)
end

#gen_pub_paramsObject



101
102
103
104
105
106
107
108
109
110
111
# File 'lib/aliyun_live.rb', line 101

def gen_pub_params
  params={}
  params[:Format] = 'JSON'
  params[:Version] = '2016-11-01'
  params[:AccessKeyId] = @access_key_id
  params[:SignatureMethod] = 'HMAC-SHA1'
  params[:Timestamp] = Time.now.getutc.strftime("%FT%T")
  params[:SignatureVersion] = '1.0'
  params[:SignatureNonce] = SecureRandom.uuid
  params
end

#http_get(additional_params) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/aliyun_live.rb', line 86

def http_get(additional_params)
  host = 'http://live.aliyuncs.com'
  params = gen_pub_params
  params = params.merge(additional_params)
  signature = sign('GET',params)
  params[:Signature] = signature

  uri = URI(host)
  uri.query = URI.encode_www_form(params)
  puts params
  puts URI.encode_www_form(params)
  resp = Net::HTTP.get_response(uri)
  JSON.parse resp.body
end

#resumeLiveStream(domain_name, app_name, stream_name) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/aliyun_live.rb', line 59

def resumeLiveStream(domain_name, app_name, stream_name)
  params = {}
  params[:Action] = 'DescribeLiveStreamOnlineUserNum'
  params[:DomainName] = domain_name
  params[:AppName] = app_name
  params[:StreamName] = stream_name
  params[:LiveStreamType] = 'publisher' 
  http_get(params)
end

#sign(method, params) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/aliyun_live.rb', line 70

def sign(method,params)
  str_to_sign = method + "&" + url_encode('/') + '&'
  sorted_keys = params.keys.sort
  params_str = ""
  sorted_keys.each do |key|
    params_str +=  url_encode(key) + '=' + url_encode(params[key]) + '&'
  end
  params_str = params_str[0...-1]
  str_to_sign += url_encode(params_str)
  key = @access_key_secret + '&'
  puts str_to_sign
  
  Base64.encode64(OpenSSL::HMAC.digest('sha1',key, str_to_sign))[0...-1]

end