kontena-websocket-client 0.0.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.
@@ -0,0 +1,81 @@
1
+ require 'openssl'
2
+
3
+ module Kontena::Websocket
4
+ class Error < StandardError
5
+
6
+ end
7
+
8
+ # Unable to establish connection to server
9
+ class ConnectError < Error
10
+
11
+ end
12
+
13
+ # The server sent something invalid, may not be a http/ws server
14
+ class ProtocolError < Error
15
+
16
+ end
17
+
18
+ # Unable to establish SSL connection to server
19
+ class SSLConnectError < ConnectError
20
+
21
+ end
22
+
23
+ # Unable to establish SSL connection to server when using ssl_verify: true
24
+ class SSLVerifyError < SSLConnectError
25
+ attr_reader :cert, :cert_chain
26
+
27
+ # @param verify_result [Integer] @see OpenSSL::SSL::SSLSocket#verify_result
28
+ # @param cert [OpenSSL::X509::Certificate]
29
+ # @param cert_chain [Array<OpenSSL::X509::Certificate>]
30
+ # @param message [String]
31
+ def initialize(verify_result, cert = nil, cert_chain = nil, message = nil)
32
+ super(message)
33
+ @verify_result = verify_result
34
+ @cert = cert
35
+ @cert_chain = cert_chain
36
+ end
37
+
38
+ def subject
39
+ @cert.subject
40
+ end
41
+
42
+ def issuer
43
+ @cert.issuer
44
+ end
45
+
46
+ def to_s
47
+ "certificate verify failed: #{super}"
48
+ end
49
+ end
50
+
51
+ class SocketError < Error
52
+
53
+ end
54
+
55
+ # connect/read/write timed out
56
+ class TimeoutError < Error
57
+
58
+ end
59
+
60
+ # server closed connection
61
+ class CloseError < Error
62
+ attr_reader :code, :reason
63
+
64
+ def initialize(code, reason = nil)
65
+ super(reason)
66
+ @code = code
67
+ @reason = reason
68
+ end
69
+
70
+ def to_s
71
+ "connection closed with code #{@code}: #{super}"
72
+ end
73
+ end
74
+
75
+ # Server closed connection without sending close frame
76
+ class EOFError < CloseError
77
+ def initialize(message = nil)
78
+ super(1006, message)
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,55 @@
1
+ require 'logger'
2
+
3
+ module Kontena::Websocket
4
+ module Logging
5
+ def self.initialize_logger(log_target = STDOUT, log_level = Logger::INFO)
6
+ @logger = Logger.new(log_target)
7
+ @logger.level = log_level
8
+ @logger
9
+ end
10
+
11
+ def self.logger
12
+ defined?(@logger) ? @logger : initialize_logger
13
+ end
14
+
15
+ def self.logger=(log)
16
+ @logger = (log ? log : Logger.new('/dev/null'))
17
+ end
18
+
19
+ # @return [Logger]
20
+ def logger
21
+ Kontena::Websocket::Logging.logger
22
+ end
23
+
24
+ # Prefix for log messages, defaults to class name
25
+ #
26
+ # @return [String]
27
+ def logging_prefix
28
+ self.class.name
29
+ end
30
+
31
+ # Send a debug message
32
+ # @param message [String]
33
+ def debug(message = nil, &block)
34
+ logger.add(Logger::DEBUG, message, logging_prefix, &block)
35
+ end
36
+
37
+ # Send a info message
38
+ # @param message [String]
39
+ def info(message = nil, &block)
40
+ logger.add(Logger::INFO, message, logging_prefix, &block)
41
+ end
42
+
43
+ # Send a warning message
44
+ # @param message [String]
45
+ def warn(message = nil, &block)
46
+ logger.add(Logger::WARN, message, logging_prefix, &block)
47
+ end
48
+
49
+ # Send an error message
50
+ # @param message [String]
51
+ def error(message = nil, &block)
52
+ logger.add(Logger::ERROR, message, logging_prefix, &block)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,10 @@
1
+ require 'openssl'
2
+
3
+ class OpenSSL::SSL::SSLSocket
4
+ def wait_readable(timeout)
5
+ IO.select([self], nil, nil, timeout)
6
+ end
7
+ def wait_writable(timeout)
8
+ IO.select(nil, [self], nil, timeout)
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ require 'openssl'
2
+ require 'socket'
3
+ require 'websocket/driver'
4
+
5
+ # OpenSSL::SSL::SSLSocket#wait_readable, #wait_writable
6
+ require_relative './kontena/websocket/openssl_patch'
7
+
8
+ module Kontena
9
+ module Websocket
10
+ require_relative './kontena/websocket/client/version'
11
+ require_relative './kontena/websocket/logging'
12
+ require_relative './kontena/websocket/error'
13
+ require_relative './kontena/websocket/client'
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kontena-websocket-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kontena, Inc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: websocket-driver
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.6.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.6.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.15'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.15'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ description:
70
+ email:
71
+ - info@kontena.io
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - ".travis.yml"
79
+ - Gemfile
80
+ - LICENSE
81
+ - README.md
82
+ - Rakefile
83
+ - examples/websocket-echo-client.rb
84
+ - kontena-websocket-client.gemspec
85
+ - lib/kontena-websocket-client.rb
86
+ - lib/kontena/websocket/client.rb
87
+ - lib/kontena/websocket/client/connection.rb
88
+ - lib/kontena/websocket/client/version.rb
89
+ - lib/kontena/websocket/error.rb
90
+ - lib/kontena/websocket/logging.rb
91
+ - lib/kontena/websocket/openssl_patch.rb
92
+ homepage: https://github.com/kontena/kontena-websocket-client
93
+ licenses:
94
+ - Apache-2.0
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.5.1
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: Websocket client library
116
+ test_files: []