Class: Agora::CloudRecording::Client
- Inherits:
-
Object
- Object
- Agora::CloudRecording::Client
- Includes:
- HTTParty
- Defined in:
- lib/agora/cloud_recording/client.rb
Instance Attribute Summary collapse
-
#app_id ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#customer_key ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#customer_secret ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#oss_access_key ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#oss_bucket ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#oss_filename_prefix ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#oss_region ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#oss_secret_key ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
-
#oss_vendor ⇒ Object
readonly
base_uri 通过 Agora.config.base_url 设置.
Instance Method Summary collapse
- #acquire(cname, uid, client_request = {}) ⇒ Object
-
#initialize ⇒ Client
constructor
A new instance of Client.
- #query(resource_id, sid, mode = 'mix') ⇒ Object
- #start(resource_id, cname, uid, token, mode = 'mix', recording_config = {}, recording_file_config = {}, storage_config = {}) ⇒ Object
- #stop(resource_id, sid, cname, uid, mode = 'mix', client_request = {}) ⇒ Object
Constructor Details
#initialize ⇒ Client
Returns a new instance of Client.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/agora/cloud_recording/client.rb', line 12 def initialize @config = Agora.config # 使用 Agora.config 获取配置实例 unless @config && @config.app_id && @config.customer_key && @config.customer_secret raise Agora::Errors::ConfigurationError, "声网 App ID, Customer ID, 和 Customer Certificate 必须配置。" end unless @config.oss_bucket && @config.oss_access_key && @config.oss_secret_key && @config.oss_region && @config.oss_vendor raise Agora::Errors::ConfigurationError, "云存储的 Bucket, Access Key, Secret Key, Region, 和 Vendor 必须配置。" end self.class.base_uri @config.base_url # 设置 base_uri @app_id = @config.app_id @customer_key = @config.customer_key @customer_secret = @config.customer_secret @oss_vendor = @config.oss_vendor @oss_region = @config.oss_region @oss_bucket = @config.oss_bucket @oss_access_key = @config.oss_access_key @oss_secret_key = @config.oss_secret_key @oss_filename_prefix = @config.oss_filename_prefix end |
Instance Attribute Details
#app_id ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def app_id @app_id end |
#customer_key ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def customer_key @customer_key end |
#customer_secret ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def customer_secret @customer_secret end |
#oss_access_key ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def oss_access_key @oss_access_key end |
#oss_bucket ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def oss_bucket @oss_bucket end |
#oss_filename_prefix ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def oss_filename_prefix @oss_filename_prefix end |
#oss_region ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def oss_region @oss_region end |
#oss_secret_key ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def oss_secret_key @oss_secret_key end |
#oss_vendor ⇒ Object (readonly)
base_uri 通过 Agora.config.base_url 设置
10 11 12 |
# File 'lib/agora/cloud_recording/client.rb', line 10 def oss_vendor @oss_vendor end |
Instance Method Details
#acquire(cname, uid, client_request = {}) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/agora/cloud_recording/client.rb', line 34 def acquire(cname, uid, client_request = {}) path = "/v1/apps/#{@app_id}/cloud_recording/acquire" body = { cname: cname, uid: uid, clientRequest: client_request }.to_json headers = { 'Authorization' => basic_auth_header, 'Content-Type' => 'application/json' } # 注意:HTTParty 的 post/get 方法是类方法 handle_response(self.class.post(path, body: body, headers: headers)) end |
#query(resource_id, sid, mode = 'mix') ⇒ Object
80 81 82 83 84 |
# File 'lib/agora/cloud_recording/client.rb', line 80 def query(resource_id, sid, mode = 'mix') path = "/v1/apps/#{@app_id}/cloud_recording/resourceid/#{resource_id}/sid/#{sid}/mode/#{mode}/query" headers = { 'Authorization' => basic_auth_header } handle_response(self.class.get(path, headers: headers)) end |
#start(resource_id, cname, uid, token, mode = 'mix', recording_config = {}, recording_file_config = {}, storage_config = {}) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/agora/cloud_recording/client.rb', line 50 def start(resource_id, cname, uid, token, mode = 'mix', recording_config = {}, recording_file_config = {}, storage_config = {}) path = "/v1/apps/#{@app_id}/cloud_recording/resourceid/#{resource_id}/mode/#{mode}/start" default_storage_config = { vendor: @oss_vendor, region: @oss_region, bucket: @oss_bucket, accessKey: @oss_access_key, secretKey: @oss_secret_key, fileNamePrefix: @oss_filename_prefix } body = { cname: cname, uid: uid, clientRequest: { token: token, recordingConfig: default_recording_config.merge(recording_config), recordingFileConfig: default_recording_file_config.merge(recording_file_config), storageConfig: default_storage_config.merge(storage_config) } }.to_json headers = { 'Authorization' => basic_auth_header, 'Content-Type' => 'application/json' } handle_response(self.class.post(path, body: body, headers: headers)) end |
#stop(resource_id, sid, cname, uid, mode = 'mix', client_request = {}) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/agora/cloud_recording/client.rb', line 86 def stop(resource_id, sid, cname, uid, mode = 'mix', client_request = {}) path = "/v1/apps/#{@app_id}/cloud_recording/resourceid/#{resource_id}/sid/#{sid}/mode/#{mode}/stop" body = { cname: cname, uid: uid, clientRequest: client_request }.to_json headers = { 'Authorization' => basic_auth_header, 'Content-Type' => 'application/json' } handle_response(self.class.post(path, body: body, headers: headers)) end |