obsws 0.4.2 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9ccc4e19da8ea0f009572ea75a5f47b414c7d4e5d50955ae856eb4063081ca70
4
- data.tar.gz: 2a5ec2b70667d2b80483a46c898920ed9a97d937478e45ff5f643b8e28919a18
3
+ metadata.gz: c7826cef2f98842479438cf09ac7dec77e7c8e24a8adca3dcf55fce92676c2f4
4
+ data.tar.gz: 0c5dc416a213a344488cf2059d789aa07536d83440b14fd9c2d41918821e5a9c
5
5
  SHA512:
6
- metadata.gz: '0875434a8e3c58d82fbc0deb3be4478ab495000b37ee6282d321e32963d623dcc241c62a0257ef009ab6981ef134138e6e72ab76a1f552d46a3b928f1acc21d4'
7
- data.tar.gz: 3b944c1a4ac416f12a0f5d821d73979ac4f344fa2ae186f04a0d00998bc5adf9fcf744e874d4b52f273232aec174a2da134a94f5bcd24d522d25e2b778c7bd9f
6
+ metadata.gz: 178671ff1a8f5577694fe4d7f02e0c96f6d37ef50ec36ba6ee802f6999ad5fc470695ade79caf2393b32eb9d0fc325236131490f5348a020d9fb73eb6aaa219d
7
+ data.tar.gz: bb0fe9a35b56699bd64b0f0d55d1f203ceaa7fe1abfafcc5d3ca23cb3207275662f223a1d4a124e1a89f52c724d688fdfaf5f548bec5586155ee732d99bebb08
data/README.md CHANGED
@@ -109,7 +109,13 @@ def on_scene_created(data):
109
109
 
110
110
  ### Errors
111
111
 
112
- If a request fails an `OBSWSError` will be raised with a status code.
112
+ If a general error occurs an `OBSWSError` will be raised.
113
+
114
+ If a connection attempt fails or times out an `OBSWSConnectionError` will be raised.
115
+
116
+ If a request fails an `OBSWSRequestError` will be raised with a status code.
117
+
118
+ - The request name and code are retrievable through attributes {OBSWSRequestError}.name and {OBSWSRequestError}.code
113
119
 
114
120
  For a full list of status codes refer to [Codes](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#requeststatus)
115
121
 
data/lib/obsws/base.rb CHANGED
@@ -1,12 +1,3 @@
1
- require "digest/sha2"
2
- require "json"
3
- require "waitutil"
4
-
5
- require_relative "driver"
6
- require_relative "error"
7
- require_relative "logger"
8
- require_relative "mixin"
9
-
10
1
  module OBSWS
11
2
  class Base
12
3
  include Logging
data/lib/obsws/driver.rb CHANGED
@@ -1,6 +1,3 @@
1
- require "socket"
2
- require "websocket/driver"
3
-
4
1
  module OBSWS
5
2
  module Driver
6
3
  class Socket
data/lib/obsws/event.rb CHANGED
@@ -1,9 +1,3 @@
1
- require "json"
2
-
3
- require_relative "util"
4
- require_relative "mixin"
5
- require_relative "logger"
6
-
7
1
  module OBSWS
8
2
  module Events
9
3
  module SUBS
@@ -78,6 +72,11 @@ module OBSWS
78
72
  kwargs[:subs] ||= SUBS::LOW_VOLUME
79
73
  @base_client = Base.new(**kwargs)
80
74
  logger.info("#{self} successfully identified with server")
75
+ rescue Errno::ECONNREFUSED, WaitUtil::TimeoutError => e
76
+ msg = "#{e.class.name}: #{e.message}"
77
+ logger.error(msg)
78
+ raise OBSWSConnectionError.new(msg)
79
+ else
81
80
  @base_client.updater = ->(op_code, data) {
82
81
  if op_code == Mixin::OPCodes::EVENT
83
82
  logger.debug("received: #{data}")
data/lib/obsws/logger.rb CHANGED
@@ -1,5 +1,3 @@
1
- require "logger"
2
-
3
1
  module OBSWS
4
2
  module Logging
5
3
  def logger
data/lib/obsws/mixin.rb CHANGED
@@ -1,5 +1,3 @@
1
- require_relative "util"
2
-
3
1
  module OBSWS
4
2
  module Mixin
5
3
  module Meta
data/lib/obsws/req.rb CHANGED
@@ -1,22 +1,18 @@
1
- require "waitutil"
2
-
3
- require_relative "base"
4
- require_relative "error"
5
- require_relative "util"
6
- require_relative "mixin"
7
- require_relative "logger"
8
-
9
1
  module OBSWS
10
2
  module Requests
11
3
  class Client
12
4
  include Logging
13
- include Error
14
5
  include Mixin::TearDown
15
6
  include Mixin::OPCodes
16
7
 
17
8
  def initialize(**kwargs)
18
9
  @base_client = Base.new(**kwargs)
19
10
  logger.info("#{self} successfully identified with server")
11
+ rescue Errno::ECONNREFUSED, WaitUtil::TimeoutError => e
12
+ msg = "#{e.class.name}: #{e.message}"
13
+ logger.error(msg)
14
+ raise OBSWSConnectionError.new(msg)
15
+ else
20
16
  @base_client.updater = ->(op_code, data) {
21
17
  logger.debug("response received: #{data}")
22
18
  @response = data if op_code == Mixin::OPCodes::REQUESTRESPONSE
@@ -48,19 +44,23 @@ module OBSWS
48
44
  timeout_sec: 3
49
45
  ) { @response[:requestId] == id }
50
46
  unless @response[:requestStatus][:result]
51
- error = [
52
- "Request #{@response[:requestType]} returned code #{@response[:requestStatus][:code]}"
53
- ]
54
- if @response[:requestStatus].key?(:comment)
55
- error << ["With message: #{@response[:requestStatus][:comment]}"]
56
- end
57
- raise OBSWSError.new(error.join("\n"))
47
+ raise OBSWSRequestError.new(@response[:requestType], @response[:requestStatus][:code], @response[:requestStatus][:comment])
58
48
  end
59
49
  @response[:responseData]
60
- rescue WaitUtil::TimeoutError
61
- msg = "no response with matching id received"
62
- logger.error(msg)
63
- raise OBSWSError.new(msg)
50
+ rescue OBSWSRequestError => e
51
+ err_msg = [
52
+ "#{e.class.name}: #{e.message}",
53
+ *e.backtrace
54
+ ]
55
+ logger.error(err_msg.join("\n"))
56
+ raise
57
+ rescue WaitUtil::TimeoutError => e
58
+ err_msg = [
59
+ "#{e.class.name}: #{e.message}",
60
+ *e.backtrace
61
+ ]
62
+ logger.error(err_msg)
63
+ raise OBSWSError.new(err_msg)
64
64
  end
65
65
 
66
66
  def get_version
data/lib/obsws/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module OBSWS
2
- module Version
2
+ module VERSION
3
3
  module_function
4
4
 
5
5
  def major
@@ -7,11 +7,11 @@ module OBSWS
7
7
  end
8
8
 
9
9
  def minor
10
- 4
10
+ 5
11
11
  end
12
12
 
13
13
  def patch
14
- 2
14
+ 0
15
15
  end
16
16
 
17
17
  def to_a
@@ -22,6 +22,4 @@ module OBSWS
22
22
  to_a.join(".")
23
23
  end
24
24
  end
25
-
26
- VERSION = Version.to_s
27
25
  end
data/lib/obsws.rb CHANGED
@@ -1,5 +1,42 @@
1
+ require "digest/sha2"
2
+ require "json"
3
+ require "waitutil"
4
+ require "socket"
5
+ require "websocket/driver"
6
+ require "logger"
7
+
8
+ require_relative "obsws/logger"
9
+ require_relative "obsws/driver"
10
+ require_relative "obsws/util"
11
+ require_relative "obsws/mixin"
12
+ require_relative "obsws/base"
13
+
1
14
  require_relative "obsws/req"
2
15
  require_relative "obsws/event"
3
16
 
17
+ require_relative "obsws/version"
18
+
4
19
  module OBSWS
20
+ class OBSWSError < StandardError; end
21
+
22
+ class OBSWSConnectionError < OBSWSError; end
23
+
24
+ class OBSWSRequestError < OBSWSError
25
+ attr_reader :name, :code
26
+
27
+ def initialize(name, code, msg)
28
+ @name = name
29
+ @code = code
30
+ @msg = msg
31
+ super(message)
32
+ end
33
+
34
+ def message
35
+ msg = [
36
+ "Request #{@name} returned code #{@code}."
37
+ ]
38
+ msg << "With message: #{@msg}" if @msg
39
+ msg.join(" ")
40
+ end
41
+ end
5
42
  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.2
4
+ version: 0.5.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: 2023-08-06 00:00:00.000000000 Z
11
+ date: 2023-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-driver
@@ -107,7 +107,6 @@ files:
107
107
  - lib/obsws.rb
108
108
  - lib/obsws/base.rb
109
109
  - lib/obsws/driver.rb
110
- - lib/obsws/error.rb
111
110
  - lib/obsws/event.rb
112
111
  - lib/obsws/logger.rb
113
112
  - lib/obsws/mixin.rb
data/lib/obsws/error.rb DELETED
@@ -1,6 +0,0 @@
1
- module OBSWS
2
- module Error
3
- class OBSWSError < StandardError
4
- end
5
- end
6
- end