openvidu-ruby-client 0.2.3 → 0.3.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 +4 -4
- data/.gitignore +2 -0
- data/README.md +26 -7
- data/lib/open_vidu.rb +2 -1
- data/lib/open_vidu/base.rb +5 -1
- data/lib/open_vidu/command.rb +8 -4
- data/lib/open_vidu/config.rb +2 -2
- data/lib/open_vidu/recording.rb +17 -11
- data/lib/open_vidu/requestor.rb +6 -9
- data/lib/open_vidu/responder.rb +4 -7
- data/lib/open_vidu/server.rb +39 -0
- data/lib/open_vidu/session.rb +8 -12
- data/lib/open_vidu/token.rb +1 -5
- data/lib/open_vidu/version.rb +1 -1
- data/openvidu-ruby-client.gemspec +3 -1
- metadata +31 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92a0236b9a03c43f0e291d64f90afe17c0b7df22
|
4
|
+
data.tar.gz: 349f451e07e134e94e1fa51b496ef4058595e67f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 547c143edba3b07a2bc0bad6fa41b7dd0ddd8663f9f25b37f9ec7992652377547da6284164ea06ad55de2eb74d68188d9e4ff53525ebbab025b3676326b83cbc
|
7
|
+
data.tar.gz: 5bcbfcb21c66f75c8b11df8c9a44992bbb8087a64d1e37ac52998baf4052d29754564346833202a16a8bf51db0d517c2a7667452a04ee76e83b6654922125602
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# OpenVidu Ruby Client
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+

|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
@@ -22,12 +20,33 @@ Or install it yourself as:
|
|
22
20
|
|
23
21
|
## Usage
|
24
22
|
|
25
|
-
|
23
|
+
To get started locally, first pull the OpenVidu Docker image and start a container:
|
26
24
|
|
27
25
|
```bash
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
docker pull openvidu/openvidu-server-kms
|
27
|
+
docker run -p 4443:4443 -d --rm -e openvidu.secret=MY_SECRET -e openvidu.recording.path=/recordings -e openvidu.recording=true -v /var/run/docker.sock:/var/run/docker.sock openvidu/openvidu-server-kms
|
28
|
+
```
|
29
|
+
|
30
|
+
Set the following environment variables in your Ruby application:
|
31
|
+
|
32
|
+
To start a OpenVidu session:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
server = 'https://127.0.0.1:4443?token=MY_SECRET'
|
36
|
+
|
37
|
+
OpenVidu::Session.new(server,
|
38
|
+
customSessionId: 'your-custom-session-id',
|
39
|
+
defaultOutputMode: 'INDIVIDUAL',
|
40
|
+
recordingMode: 'ALWAYS').create
|
41
|
+
|
42
|
+
# Create a token to publish video
|
43
|
+
token = OpenVidu::Token.new(server, session: 'your-custom-session-id,
|
44
|
+
role: "PUBLISHER",
|
45
|
+
data: {
|
46
|
+
"full_name": "John Smith" # Custom data can be supplied here
|
47
|
+
}
|
48
|
+
)
|
49
|
+
|
31
50
|
```
|
32
51
|
|
33
52
|
## Development
|
data/lib/open_vidu.rb
CHANGED
data/lib/open_vidu/base.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'open_vidu/command'
|
2
|
+
require 'open_vidu/server'
|
2
3
|
|
3
4
|
module OpenVidu
|
4
5
|
# Base
|
@@ -7,11 +8,14 @@ module OpenVidu
|
|
7
8
|
GENERATED_PARAMS = %w[].freeze
|
8
9
|
ALL_PARAMS = (ASSIGNABLE_PARAMS + GENERATED_PARAMS).freeze
|
9
10
|
|
11
|
+
attr_reader :server
|
12
|
+
|
10
13
|
def self.content_key
|
11
14
|
'content'
|
12
15
|
end
|
13
16
|
|
14
|
-
def initialize(params = {})
|
17
|
+
def initialize(uri, params = {})
|
18
|
+
@server = Server.new(uri).freeze
|
15
19
|
self.class::ALL_PARAMS.each do |param|
|
16
20
|
instance_variable_set("@#{param}", params[param.to_sym])
|
17
21
|
self.class.send(:attr_accessor, param.to_sym)
|
data/lib/open_vidu/command.rb
CHANGED
@@ -5,19 +5,23 @@ require 'open_vidu/exceptions'
|
|
5
5
|
module OpenVidu
|
6
6
|
# Command
|
7
7
|
class Command
|
8
|
-
attr_reader :object, :method, :endpoint, :params
|
8
|
+
attr_reader :object, :method, :endpoint, :params, :requestor, :responder, :server
|
9
9
|
|
10
|
-
def initialize(object, method, endpoint, params = {})
|
10
|
+
def initialize(object, method, endpoint, params = {}, options: {})
|
11
11
|
@object = object
|
12
12
|
@method = method
|
13
13
|
@endpoint = endpoint
|
14
14
|
@params = params
|
15
|
+
|
16
|
+
@server = options.fetch(:server)
|
17
|
+
@requestor = options[:requestor] || OpenVidu::Requestor.new(server, method, endpoint, params)
|
18
|
+
@responder = options[:responder] || OpenVidu::Responder.new
|
15
19
|
end
|
16
20
|
|
17
21
|
def execute
|
18
|
-
response =
|
22
|
+
response = requestor.execute
|
19
23
|
raise OpenVidu::ResponseError.new(response) unless valid?(response)
|
20
|
-
|
24
|
+
responder.execute(server, object, response.parsed_response)
|
21
25
|
end
|
22
26
|
|
23
27
|
private
|
data/lib/open_vidu/config.rb
CHANGED
@@ -12,8 +12,8 @@ module OpenVidu
|
|
12
12
|
].freeze
|
13
13
|
ALL_PARAMS = (ASSIGNABLE_PARAMS + GENERATED_PARAMS).freeze
|
14
14
|
|
15
|
-
def
|
16
|
-
OpenVidu::Command.new(:config, :get, 'config').execute
|
15
|
+
def config
|
16
|
+
OpenVidu::Command.new(:config, :get, 'config', { options: {server: server } }).execute
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
data/lib/open_vidu/recording.rb
CHANGED
@@ -14,19 +14,19 @@ module OpenVidu
|
|
14
14
|
'items'
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def all
|
18
18
|
OpenVidu::Command.new(
|
19
|
-
:recording,
|
19
|
+
:recording,
|
20
|
+
:get,
|
21
|
+
'api/recordings',
|
22
|
+
{ options: { server: server } }
|
20
23
|
).execute
|
21
24
|
end
|
22
25
|
|
23
|
-
def
|
24
|
-
new(params).create
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.find(id)
|
26
|
+
def find(id)
|
28
27
|
OpenVidu::Command.new(
|
29
|
-
:recording, :get, "api/recordings/#{id}"
|
28
|
+
:recording, :get, "api/recordings/#{id}",
|
29
|
+
{ options: { server: server } }
|
30
30
|
).execute
|
31
31
|
end
|
32
32
|
|
@@ -34,7 +34,8 @@ module OpenVidu
|
|
34
34
|
OpenVidu::Command.new(
|
35
35
|
:recording,
|
36
36
|
:post,
|
37
|
-
"api/recordings/stop/#{id}"
|
37
|
+
"api/recordings/stop/#{id}",
|
38
|
+
{ options: { server: server } }
|
38
39
|
).execute
|
39
40
|
end
|
40
41
|
|
@@ -42,13 +43,18 @@ module OpenVidu
|
|
42
43
|
OpenVidu::Command.new(
|
43
44
|
:recording,
|
44
45
|
:delete,
|
45
|
-
"api/recordings/#{id}"
|
46
|
+
"api/recordings/#{id}",
|
47
|
+
{ options: { server: server } }
|
46
48
|
).execute
|
47
49
|
end
|
48
50
|
|
49
51
|
def create
|
50
52
|
OpenVidu::Command.new(
|
51
|
-
:recording,
|
53
|
+
:recording,
|
54
|
+
:post,
|
55
|
+
'api/recordings/start',
|
56
|
+
create_params,
|
57
|
+
{ options: { server: server } }
|
52
58
|
).execute
|
53
59
|
end
|
54
60
|
|
data/lib/open_vidu/requestor.rb
CHANGED
@@ -4,13 +4,10 @@ require 'json'
|
|
4
4
|
module OpenVidu
|
5
5
|
# Requestor
|
6
6
|
class Requestor
|
7
|
-
attr_reader :method, :endpoint, :params
|
7
|
+
attr_reader :server, :method, :endpoint, :params
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
VERIFY_PEER = ENV['OPENVIDU_VERIFY_PEER']
|
12
|
-
|
13
|
-
def initialize(method, endpoint, params = {})
|
9
|
+
def initialize(server, method, endpoint, params = {})
|
10
|
+
@server = server
|
14
11
|
@method = method
|
15
12
|
@endpoint = endpoint
|
16
13
|
@params = params
|
@@ -23,16 +20,16 @@ module OpenVidu
|
|
23
20
|
private
|
24
21
|
|
25
22
|
def url
|
26
|
-
"#{
|
23
|
+
"#{server.scheme}://#{server.host}:#{server.port || 4443}/#{endpoint}"
|
27
24
|
end
|
28
25
|
|
29
26
|
def options
|
30
27
|
{
|
31
28
|
headers: {
|
32
|
-
'Authorization' => "Basic #{Base64.strict_encode64(
|
29
|
+
'Authorization' => "Basic #{Base64.strict_encode64(server.token)}",
|
33
30
|
'Content-Type' => 'application/json'
|
34
31
|
},
|
35
|
-
verify:
|
32
|
+
verify: server.verify_peer?,
|
36
33
|
body: params.to_json
|
37
34
|
}
|
38
35
|
end
|
data/lib/open_vidu/responder.rb
CHANGED
@@ -3,19 +3,16 @@ module OpenVidu
|
|
3
3
|
class Responder
|
4
4
|
attr_reader :object, :response
|
5
5
|
|
6
|
-
def
|
6
|
+
def execute(server, object, response)
|
7
7
|
@object = object
|
8
8
|
@response = response
|
9
|
-
end
|
10
|
-
|
11
|
-
def execute
|
12
9
|
klass = Object.const_get(klass_name)
|
13
10
|
|
14
11
|
return true if record_destroyed?
|
15
|
-
return klass.new(mapped_params(response)) if complete_record?
|
16
|
-
return klass.find(response['id']) if record_lookup?
|
12
|
+
return klass.new(server, mapped_params(response)) if complete_record?
|
13
|
+
return klass.new(server).find(response['id']) if record_lookup?
|
17
14
|
|
18
|
-
response[content_key].map { |hash| klass.new(mapped_params(hash)) }
|
15
|
+
response[content_key].map { |hash| klass.new(server, mapped_params(hash)) }
|
19
16
|
end
|
20
17
|
|
21
18
|
private
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'addressable'
|
2
|
+
require 'forwardable'
|
3
|
+
|
4
|
+
module OpenVidu
|
5
|
+
# Endpoint configuration
|
6
|
+
class Server
|
7
|
+
extend Forwardable
|
8
|
+
|
9
|
+
InvalidURI = Class.new(StandardError)
|
10
|
+
|
11
|
+
def_delegators :@uri, :host, :port, :scheme, :query_values, :to_s
|
12
|
+
|
13
|
+
# `uri` should take the form of scheme://some-openvidu-host-or-ip:port?token=<your-secret-here>
|
14
|
+
# e.g. https://1.2.3.4?token=abcdefghijklmnop
|
15
|
+
def initialize(uri)
|
16
|
+
@uri = Addressable::URI.parse(uri.to_s)
|
17
|
+
raise InvalidURI if @uri.empty?
|
18
|
+
end
|
19
|
+
|
20
|
+
def token
|
21
|
+
"OPENVIDUAPP:#{query_values.fetch('token')}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def host_and_port
|
25
|
+
"#{host}:#{port}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def verify_peer?
|
29
|
+
return false if query_values['verify_peer'].to_s.downcase == 'false'
|
30
|
+
|
31
|
+
true
|
32
|
+
end
|
33
|
+
|
34
|
+
def ==(other)
|
35
|
+
other.to_s == self.to_s
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
data/lib/open_vidu/session.rb
CHANGED
@@ -8,26 +8,22 @@ module OpenVidu
|
|
8
8
|
GENERATED_PARAMS = %w[sessionId createdAt connections recording].freeze
|
9
9
|
ALL_PARAMS = (ASSIGNABLE_PARAMS + GENERATED_PARAMS).freeze
|
10
10
|
|
11
|
-
def
|
11
|
+
def all
|
12
12
|
OpenVidu::Command.new(
|
13
|
-
:session, :get, 'api/sessions'
|
13
|
+
:session, :get, 'api/sessions', { options: { server: server } }
|
14
14
|
).execute
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
new(params).create
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.find(id)
|
17
|
+
def find(id)
|
22
18
|
OpenVidu::Command.new(
|
23
|
-
:session, :get, "api/sessions/#{id}"
|
19
|
+
:session, :get, "api/sessions/#{id}", { options: { server: server } }
|
24
20
|
).execute
|
25
21
|
end
|
26
22
|
|
27
|
-
def
|
23
|
+
def exists?(id)
|
28
24
|
begin
|
29
25
|
OpenVidu::Command.new(
|
30
|
-
|
26
|
+
:session, :get, "api/sessions/#{id}", { options: { server: server } }
|
31
27
|
).execute
|
32
28
|
true
|
33
29
|
rescue OpenVidu::ResponseError => e
|
@@ -38,13 +34,13 @@ module OpenVidu
|
|
38
34
|
|
39
35
|
def create
|
40
36
|
OpenVidu::Command.new(
|
41
|
-
:session, :post, 'api/sessions', create_params
|
37
|
+
:session, :post, 'api/sessions', create_params, { options: { server: server } }
|
42
38
|
).execute
|
43
39
|
end
|
44
40
|
|
45
41
|
def delete
|
46
42
|
OpenVidu::Command.new(
|
47
|
-
:session, :delete, "api/sessions/#{
|
43
|
+
:session, :delete, "api/sessions/#{customSessionId}", { options: { server: server } }
|
48
44
|
).execute
|
49
45
|
end
|
50
46
|
end
|
data/lib/open_vidu/token.rb
CHANGED
@@ -5,13 +5,9 @@ module OpenVidu
|
|
5
5
|
GENERATED_PARAMS = %w[id token].freeze
|
6
6
|
ALL_PARAMS = (ASSIGNABLE_PARAMS + GENERATED_PARAMS).freeze
|
7
7
|
|
8
|
-
def self.create(params)
|
9
|
-
new(params).create
|
10
|
-
end
|
11
|
-
|
12
8
|
def create
|
13
9
|
OpenVidu::Command.new(
|
14
|
-
:token, :post, 'api/tokens', create_params
|
10
|
+
:token, :post, 'api/tokens', create_params, options: { server: server }
|
15
11
|
).execute
|
16
12
|
end
|
17
13
|
end
|
data/lib/open_vidu/version.rb
CHANGED
@@ -37,7 +37,9 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
38
|
spec.add_development_dependency 'test-unit', '~> 3.3', '>= 3.3.4'
|
39
39
|
spec.add_development_dependency 'openssl', '>= 2.1.2' # Fix for Travis CI
|
40
|
+
spec.add_development_dependency 'webmock', '~> 3.7'
|
41
|
+
spec.add_development_dependency 'simplecov', '~> 0.17'
|
40
42
|
|
41
|
-
spec.
|
43
|
+
spec.add_runtime_dependency 'addressable', '>= 2.5.0'
|
42
44
|
spec.add_runtime_dependency 'httparty', '>= 0.13'
|
43
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openvidu-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Saxon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -93,25 +93,47 @@ dependencies:
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: 2.1.2
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
96
|
+
name: webmock
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
102
|
-
|
101
|
+
version: '3.7'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '3.7'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: simplecov
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
103
114
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
115
|
+
version: '0.17'
|
105
116
|
type: :development
|
106
117
|
prerelease: false
|
107
118
|
version_requirements: !ruby/object:Gem::Requirement
|
108
119
|
requirements:
|
109
120
|
- - "~>"
|
110
121
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
122
|
+
version: '0.17'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: addressable
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 2.5.0
|
130
|
+
type: :runtime
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
112
134
|
- - ">="
|
113
135
|
- !ruby/object:Gem::Version
|
114
|
-
version: 2.
|
136
|
+
version: 2.5.0
|
115
137
|
- !ruby/object:Gem::Dependency
|
116
138
|
name: httparty
|
117
139
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,6 +173,7 @@ files:
|
|
151
173
|
- lib/open_vidu/recording.rb
|
152
174
|
- lib/open_vidu/requestor.rb
|
153
175
|
- lib/open_vidu/responder.rb
|
176
|
+
- lib/open_vidu/server.rb
|
154
177
|
- lib/open_vidu/session.rb
|
155
178
|
- lib/open_vidu/token.rb
|
156
179
|
- lib/open_vidu/version.rb
|