Class: Agora::CloudRecording::Client

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/agora/cloud_recording/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeClient

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_idObject (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_keyObject (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_secretObject (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_keyObject (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_bucketObject (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_prefixObject (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_regionObject (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_keyObject (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_vendorObject (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