obsws 0.5.8 → 0.6.1
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/README.md +14 -20
- data/lib/obsws/base.rb +1 -1
- data/lib/obsws/event.rb +15 -23
- data/lib/obsws/mixin.rb +2 -2
- data/lib/obsws/version.rb +2 -2
- data/lib/obsws.rb +6 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2b42a23b71da1f893d08f8f1ffba2b178dd48cefa35627afd0bcdbf839fd6c7
|
4
|
+
data.tar.gz: 1654fafec480037f48b39eed30fa36e862b1cafe56d5c5af9e6fcaaa76a1e337
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e54a03b4df1b1e77ab27fe25980ac759ff38c204885e1fdd6d4f07747b1485a8d00bbf77a75a866e2e8fa3d664d44c53cff10e5b9276772894131afbb0c53f8d
|
7
|
+
data.tar.gz: 0a9c417863aed8279eca8c838db1ddd635b4bc7eaba4fa2bb49e1141a313f9fa20cfeb281e5de79a21393b368e0f660e6beef526bf57505a01449024202abf61
|
data/README.md
CHANGED
@@ -67,7 +67,9 @@ For a full list of requests refer to [Requests](https://github.com/obsproject/ob
|
|
67
67
|
|
68
68
|
### Events
|
69
69
|
|
70
|
-
Register `
|
70
|
+
Register blocks with the Event client using the `on` method. Event tokens should match the event name but snake cased.
|
71
|
+
|
72
|
+
The event data will be passed to the block.
|
71
73
|
|
72
74
|
example:
|
73
75
|
|
@@ -75,23 +77,14 @@ example:
|
|
75
77
|
class Observer
|
76
78
|
def initialize
|
77
79
|
@e_client = OBSWS::Events::Client.new(host: "localhost", port: 4455, password: "strongpassword")
|
78
|
-
# register
|
79
|
-
@e_client.
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
# define "on_" event methods.
|
88
|
-
def on_current_program_scene_changed(data)
|
89
|
-
...
|
80
|
+
# register blocks on event types.
|
81
|
+
@e_client.on :current_program_scene_changed do |data|
|
82
|
+
...
|
83
|
+
end
|
84
|
+
@e_client.on :input_mute_state_changed do |data|
|
85
|
+
...
|
86
|
+
end
|
90
87
|
end
|
91
|
-
def on_input_mute_state_changed(data)
|
92
|
-
...
|
93
|
-
end
|
94
|
-
...
|
95
88
|
end
|
96
89
|
```
|
97
90
|
|
@@ -104,11 +97,12 @@ For both request responses and event data you may inspect the available attribut
|
|
104
97
|
example:
|
105
98
|
|
106
99
|
```ruby
|
107
|
-
resp =
|
100
|
+
resp = @r_client.get_version
|
108
101
|
p resp.attrs
|
109
102
|
|
110
|
-
|
111
|
-
|
103
|
+
@e_client.on :input_mute_state_changed do |data|
|
104
|
+
p data.attrs
|
105
|
+
end
|
112
106
|
```
|
113
107
|
|
114
108
|
### Errors
|
data/lib/obsws/base.rb
CHANGED
@@ -29,8 +29,8 @@ module OBSWS
|
|
29
29
|
port = kwargs[:port] || 4455
|
30
30
|
@password = kwargs[:password] || ""
|
31
31
|
@subs = kwargs[:subs] || 0
|
32
|
-
setup_driver(host, port) and start_driver
|
33
32
|
@identified = Identified.new
|
33
|
+
setup_driver(host, port) and start_driver
|
34
34
|
WaitUtil.wait_for_condition(
|
35
35
|
"successful identification",
|
36
36
|
delay_sec: 0.01,
|
data/lib/obsws/event.rb
CHANGED
@@ -28,43 +28,35 @@ module OBSWS
|
|
28
28
|
ALL = LOW_VOLUME | HIGH_VOLUME
|
29
29
|
end
|
30
30
|
|
31
|
-
module
|
31
|
+
module EventDirector
|
32
32
|
include Util::String
|
33
33
|
|
34
34
|
def observers
|
35
|
-
@observers ||=
|
35
|
+
@observers ||= {}
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
|
40
|
-
observer.each { |o| observers << o unless observers.include? o }
|
38
|
+
def on(event, method = nil, &block)
|
39
|
+
(observers[event] ||= []) << (block || method)
|
41
40
|
end
|
42
41
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
42
|
+
def register(cbs)
|
43
|
+
cbs = Array(cbs) unless cbs.respond_to? :each
|
44
|
+
cbs.each { |cb| on(cb.name[3..].to_sym, cb) }
|
46
45
|
end
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
if o.name.to_s == "on_#{snakecase(event)}"
|
52
|
-
data.empty? ? o.call : o.call(data)
|
53
|
-
end
|
54
|
-
elsif o.respond_to? "on_#{snakecase(event)}"
|
55
|
-
data.empty? ? o.send("on_#{snakecase(event)}") : o.send("on_#{snakecase(event)}", data)
|
56
|
-
end
|
57
|
-
end
|
47
|
+
def deregister(cbs)
|
48
|
+
cbs = Array(cbs) unless cbs.respond_to? :each
|
49
|
+
cbs.each { |cb| observers[cb.name[3..].to_sym]&.reject! { |o| cbs.include? o } }
|
58
50
|
end
|
59
51
|
|
60
|
-
|
61
|
-
|
62
|
-
|
52
|
+
def fire(event, data)
|
53
|
+
observers[snakecase(event).to_sym]&.each { |block| data.empty? ? block.call : block.call(data) }
|
54
|
+
end
|
63
55
|
end
|
64
56
|
|
65
57
|
class Client
|
66
58
|
include Logging
|
67
|
-
include
|
59
|
+
include EventDirector
|
68
60
|
include Mixin::TearDown
|
69
61
|
include Mixin::OPCodes
|
70
62
|
|
@@ -87,7 +79,7 @@ module OBSWS
|
|
87
79
|
logger.debug("received: #{data}")
|
88
80
|
event = data[:eventType]
|
89
81
|
data = data.fetch(:eventData, {})
|
90
|
-
|
82
|
+
fire(event, Mixin::Data.new(data, data.keys))
|
91
83
|
end
|
92
84
|
}
|
93
85
|
end
|
data/lib/obsws/mixin.rb
CHANGED
@@ -24,11 +24,11 @@ module OBSWS
|
|
24
24
|
def attrs = @fields.map { |f| snakecase(f.to_s) }
|
25
25
|
end
|
26
26
|
|
27
|
-
class Response < MetaObject; end
|
28
27
|
# Represents a request response object
|
28
|
+
class Response < MetaObject; end
|
29
29
|
|
30
|
-
class Data < MetaObject; end
|
31
30
|
# Represents an event data object
|
31
|
+
class Data < MetaObject; end
|
32
32
|
|
33
33
|
module TearDown
|
34
34
|
def stop_driver
|
data/lib/obsws/version.rb
CHANGED
data/lib/obsws.rb
CHANGED
@@ -18,26 +18,22 @@ require_relative "obsws/event"
|
|
18
18
|
require_relative "obsws/version"
|
19
19
|
|
20
20
|
module OBSWS
|
21
|
+
# Base OBSWS error class
|
21
22
|
class OBSWSError < StandardError; end
|
22
23
|
|
24
|
+
# Raised when a connection fails or times out
|
23
25
|
class OBSWSConnectionError < OBSWSError; end
|
24
26
|
|
27
|
+
# Raised when a request returns an error code
|
25
28
|
class OBSWSRequestError < OBSWSError
|
26
29
|
attr_reader :req_name, :code
|
27
30
|
|
28
|
-
def initialize(req_name, code,
|
31
|
+
def initialize(req_name, code, comment)
|
29
32
|
@req_name = req_name
|
30
33
|
@code = code
|
31
|
-
|
34
|
+
message = "Request #{@req_name} returned code #{@code}."
|
35
|
+
message << " With message: #{comment}" if comment
|
32
36
|
super(message)
|
33
37
|
end
|
34
|
-
|
35
|
-
def message
|
36
|
-
msg = [
|
37
|
-
"Request #{@req_name} returned code #{@code}."
|
38
|
-
]
|
39
|
-
msg << "With message: #{@msg}" if @msg
|
40
|
-
msg.join(" ")
|
41
|
-
end
|
42
38
|
end
|
43
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: obsws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- onyx_online
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: websocket-driver
|