obsws 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 951d942da5f3b7b0895acdd2921ac74b1fa21a1f3e4a56e58ea58c053ca2a51e
4
- data.tar.gz: 5f1c953ecfe4b187b63f2aae17cae497e5475dc049c7fb06a5d84451795e7ae3
3
+ metadata.gz: 8812e43e45759a458a445608809725e4a270daa04a3b715997541eed5bc85e5b
4
+ data.tar.gz: 0500dfc0223ad3f489016791fc0ca51800ec903d0bf7e57305216ff0844ee722
5
5
  SHA512:
6
- metadata.gz: c6aacbdc428e859c97669718b2df5f447fb6a136dd9def91b87613c40b7f25798236db96ddb3c29d629b30dbcebc8250f2566334fa5c82572eec4d9cf64e140f
7
- data.tar.gz: d2729c6a1d9c50c37dac5f204d2d654375822b3f70911a420ba81b386d75f8afa2e5f7ead8cce0e496b12d221afeacaa9987119465136da19342c42785fc7102
6
+ metadata.gz: ef31376738aa182535f924e6981dab5eb8b83ec0e8254335d15e6fbab6ce952638c43c9769f21bd50c79b4b4e61750a7d16bdd2dc3910636b7e44957177bfdb2
7
+ data.tar.gz: fb4f85815ecfce661e4c46ba63bf008b4eb3c3d89d728a646b1a9c3ce40f22dea1ea00ded2b272abf82d4bb53e79ac275f1345ba87de45e2e4beb2d57f611f82
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/onyx-and-iris/voicemeeter-api-ruby/blob/dev/LICENSE)
1
+ [![Gem Version](https://badge.fury.io/rb/obsws.svg)](https://badge.fury.io/rb/obsws)
2
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/onyx-and-iris/obsws-ruby/blob/dev/LICENSE)
2
3
  [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/plugin-ruby)
3
4
 
4
5
  # A Ruby wrapper around OBS Studio WebSocket v5.0
@@ -10,6 +11,19 @@
10
11
  - With the release of OBS Studio version 28, Websocket plugin is included by default. But it should be manually installed for earlier versions of OBS.
11
12
  - Ruby 3.0 or greater
12
13
 
14
+ ## Installation
15
+
16
+ ### Bundler
17
+
18
+ ```
19
+ bundle add 'obsws'
20
+ bundle install
21
+ ```
22
+
23
+ ### Gem
24
+
25
+ `gem install 'obsws'`
26
+
13
27
  ## `Use`
14
28
 
15
29
  #### Example `main.rb`
data/lib/obsws/base.rb CHANGED
@@ -50,10 +50,10 @@ module OBSWS
50
50
  end
51
51
  start_driver
52
52
  WaitUtil.wait_for_condition(
53
- "waiting authentication successful",
53
+ "waiting successful identification",
54
54
  delay_sec: 0.01,
55
55
  timeout_sec: 3
56
- ) { @authenticated }
56
+ ) { @identified }
57
57
  end
58
58
 
59
59
  def start_driver
@@ -74,32 +74,28 @@ module OBSWS
74
74
  )
75
75
  end
76
76
 
77
- def authenticate(auth)
78
- token = auth_token(**auth)
77
+ def identify(auth)
78
+ LOGGER.info("initiating authentication") if auth
79
79
  payload = {
80
80
  op: Mixin::OPCodes::IDENTIFY,
81
81
  d: {
82
82
  rpcVersion: 1,
83
- authentication: token,
84
83
  eventSubscriptions: @subs
85
84
  }
86
85
  }
87
- LOGGER.debug("initiating authentication")
86
+ payload[:d][:authentication] = auth_token(**auth) if auth
88
87
  @driver.text(JSON.generate(payload))
89
88
  end
90
89
 
91
90
  def msg_handler(data)
92
- op_code = data[:op]
93
- case op_code
91
+ case data[:op]
94
92
  when Mixin::OPCodes::HELLO
95
- LOGGER.debug("hello received, passing to auth")
96
- authenticate(data[:d][:authentication])
93
+ identify(data[:d][:authentication])
97
94
  when Mixin::OPCodes::IDENTIFIED
98
- LOGGER.debug("authentication successful")
99
- @authenticated = true
95
+ @identified = true
100
96
  when Mixin::OPCodes::EVENT, Mixin::OPCodes::REQUESTRESPONSE
101
97
  changed
102
- notify_observers(op_code, data[:d])
98
+ notify_observers(data[:op], data[:d])
103
99
  end
104
100
  end
105
101
 
data/lib/obsws/event.rb CHANGED
@@ -77,9 +77,14 @@ module OBSWS
77
77
  def initialize(**kwargs)
78
78
  kwargs[:subs] = SUBS.low_volume
79
79
  @base_client = Base.new(**kwargs)
80
+ LOGGER.info("#{self} succesfully identified with server")
80
81
  @base_client.add_observer(self)
81
82
  end
82
83
 
84
+ def to_s
85
+ "#{self.class.name.split("::").last(2).join("::")}"
86
+ end
87
+
83
88
  def update(op_code, data)
84
89
  if op_code == Mixin::OPCodes::EVENT
85
90
  event = data[:eventType]
data/lib/obsws/mixin.rb CHANGED
@@ -5,7 +5,7 @@ module OBSWS
5
5
  module Meta
6
6
  include Util
7
7
 
8
- def make_response_methods(*params)
8
+ def make_field_methods(*params)
9
9
  params.each do |param|
10
10
  define_singleton_method(param.to_s.to_snake) { @resp[param] }
11
11
  end
@@ -18,7 +18,7 @@ module OBSWS
18
18
  def initialize(resp, fields)
19
19
  @resp = resp
20
20
  @fields = fields
21
- self.make_response_methods *fields
21
+ self.make_field_methods *fields
22
22
  end
23
23
 
24
24
  def empty? = @fields.empty?
data/lib/obsws/req.rb CHANGED
@@ -14,10 +14,15 @@ module OBSWS
14
14
 
15
15
  def initialize(**kwargs)
16
16
  @base_client = Base.new(**kwargs)
17
+ LOGGER.info("#{self} succesfully identified with server")
17
18
  @base_client.add_observer(self)
18
19
  @response = { requestId: 0 }
19
20
  end
20
21
 
22
+ def to_s
23
+ "#{self.class.name.split("::").last(2).join("::")}"
24
+ end
25
+
21
26
  def run
22
27
  yield
23
28
  ensure
data/lib/obsws/version.rb CHANGED
@@ -7,11 +7,11 @@ module OBSWS
7
7
  end
8
8
 
9
9
  def minor
10
- 0
10
+ 1
11
11
  end
12
12
 
13
13
  def patch
14
- 2
14
+ 0
15
15
  end
16
16
 
17
17
  def to_a
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.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - onyx_online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-23 00:00:00.000000000 Z
11
+ date: 2022-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: observer
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  - !ruby/object:Gem::Version
147
147
  version: '0'
148
148
  requirements: []
149
- rubygems_version: 3.3.7
149
+ rubygems_version: 3.3.12
150
150
  signing_key:
151
151
  specification_version: 4
152
152
  summary: OBS Websocket v5 wrapper