websocket-connection 1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: db1332dac133cbcbbc24148295c64102e6490d6a
4
+ data.tar.gz: 5d78a0174183e49b19e19f37cecb697bc0735ab3
5
+ SHA512:
6
+ metadata.gz: 0141dc17469fe648c31cfbfbf21da71b250681f277ec3f1b1ed8c1bf542077ac085a226f2067d0cf757396a7970937736eec5ceeb6c9f1b17433102bc3287d7a
7
+ data.tar.gz: 2b965e75455ff1608fe48620b65d52e276fb2a09ef0c1f032c545c5b2cdc5544b2373fbedbc8a97f417e08f76f2ce08bddbc69a1e9f7ec38b6e4f3c8cca121d1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in sunstone.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,34 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ websocket-connection (1.0.0)
5
+ websocket-driver (>= 0.6.5)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ ansi (1.5.0)
11
+ builder (3.2.3)
12
+ minitest (5.10.2)
13
+ minitest-reporters (1.1.14)
14
+ ansi
15
+ builder
16
+ minitest (>= 5.0)
17
+ ruby-progressbar
18
+ rake (12.0.0)
19
+ ruby-progressbar (1.8.1)
20
+ websocket-driver (0.6.5)
21
+ websocket-extensions (>= 0.1.0)
22
+ websocket-extensions (0.1.2)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ minitest (= 5.10.2)
29
+ minitest-reporters (= 1.1.14)
30
+ rake
31
+ websocket-connection!
32
+
33
+ BUNDLED WITH
34
+ 1.14.4
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # websocket-connection
2
+
3
+ Create and use Websocket's without needing to use EventMachine.
4
+
5
+ # Usage
6
+
7
+ ```ruby
8
+ require 'websocket/connection'
9
+
10
+ connection = WebSocket::Connection.start('ws://example.com')
11
+ connection.on(:message) do |event|
12
+ puts event.data
13
+ connection.close
14
+ end
15
+
16
+ connection.send("example message")
17
+
18
+ while connection.open?
19
+ connection.read
20
+ end
21
+ ```
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'bundler/setup'
2
+ require "bundler/gem_tasks"
3
+ Bundler.require(:development)
4
+
5
+ require 'fileutils'
6
+ require "rake/testtask"
7
+
8
+ # Test Task
9
+ Rake::TestTask.new do |t|
10
+ t.libs << 'lib' << 'test'
11
+ t.test_files = FileList['test/**/*_test.rb']
12
+ # t.warning = true
13
+ # t.verbose = true
14
+ end
@@ -0,0 +1,61 @@
1
+ require 'socket'
2
+ require 'websocket/driver'
3
+
4
+ class WebSocket::Connection
5
+
6
+ attr_reader :url
7
+
8
+ def initialize(url, options = {})
9
+ @url = url
10
+ @driver = ::WebSocket::Driver.client(self, options)
11
+ end
12
+
13
+ def self.start(url, options = {})
14
+ connection = self.new(url, options)
15
+ connection.start
16
+ connection
17
+ end
18
+
19
+ def connect
20
+ uri = URI.parse(url)
21
+ @stream = ::Socket.tcp(uri.host, uri.port)
22
+ @driver.start
23
+ end
24
+ alias_method :start, :connect
25
+
26
+ def close
27
+ @driver.close
28
+ @stream.close
29
+ end
30
+
31
+ def closed?
32
+ @stream.closed?
33
+ end
34
+
35
+ def open?
36
+ !@stream.closed?
37
+ end
38
+
39
+ def on(event, callable = nil, &block)
40
+ @driver.on(event, callable, &block)
41
+ end
42
+
43
+ def send(message)
44
+ case message
45
+ when Numeric then @driver.text(message.to_s)
46
+ when String then @driver.text(message)
47
+ when Array then @driver.binary(message)
48
+ else false
49
+ end
50
+ end
51
+
52
+ def write(data)
53
+ @stream.write(data)
54
+ end
55
+
56
+ def read
57
+ @driver.parse(@stream.recv(256))
58
+ end
59
+
60
+
61
+ end
@@ -0,0 +1,5 @@
1
+ module WebSocket
2
+ class Connection
3
+ VERSION = '1.0.0'
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class WebSocketTest < Minitest::Test
4
+
5
+ test 'can open a connection'
6
+
7
+ end
@@ -0,0 +1,32 @@
1
+ # require 'simplecov'
2
+ # SimpleCov.start
3
+
4
+ # To make testing/debugging easier, test within this source tree versus an
5
+ # installed gem
6
+ $LOAD_PATH << File.expand_path('../lib', __FILE__)
7
+
8
+ require "minitest/autorun"
9
+ require 'minitest/unit'
10
+ require 'minitest/reporters'
11
+
12
+ require 'websocket/connection'
13
+
14
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
15
+
16
+ class Minitest::Test
17
+
18
+ # File 'lib/active_support/testing/declarative.rb'
19
+ def self.test(name, &block)
20
+ test_name = "test_#{name.gsub(/\s+/, '_')}".to_sym
21
+ defined = method_defined? test_name
22
+ raise "#{test_name} is already defined in #{self}" if defined
23
+ if block_given?
24
+ define_method(test_name, &block)
25
+ else
26
+ define_method(test_name) do
27
+ skip "No implementation provided for #{name}"
28
+ end
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path("../lib/websocket/connection/version", __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'websocket-connection'
5
+ s.version = WebSocket::Connection::VERSION
6
+ s.summary = 'WebSocket client without EventMachine'
7
+ s.authors = ["Jon Bracy"]
8
+ s.email = ["jonbracy@gmail.com"]
9
+ s.homepage = 'http://github.com/malomalo/websocket-connection'
10
+ s.licenses = ['MIT']
11
+
12
+ s.extra_rdoc_files = %w[README.md]
13
+ s.rdoc_options = %w[--main README.md --markup markdown]
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = %w[lib]
19
+
20
+ s.add_dependency 'websocket-driver', '>= 0.6.5'
21
+
22
+ s.add_development_dependency 'rake'
23
+ s.add_development_dependency 'minitest', '5.10.2'
24
+ s.add_development_dependency 'minitest-reporters', '1.1.14'
25
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: websocket-connection
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jon Bracy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-23 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: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 5.10.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 5.10.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-reporters
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.14
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.1.14
69
+ description:
70
+ email:
71
+ - jonbracy@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files:
75
+ - README.md
76
+ files:
77
+ - Gemfile
78
+ - Gemfile.lock
79
+ - README.md
80
+ - Rakefile
81
+ - lib/websocket/connection.rb
82
+ - lib/websocket/connection/version.rb
83
+ - test/connection_test.rb
84
+ - test/test_helper.rb
85
+ - websocket-connection.gemspec
86
+ homepage: http://github.com/malomalo/websocket-connection
87
+ licenses:
88
+ - MIT
89
+ metadata: {}
90
+ post_install_message:
91
+ rdoc_options:
92
+ - "--main"
93
+ - README.md
94
+ - "--markup"
95
+ - markdown
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 2.5.1
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: WebSocket client without EventMachine
114
+ test_files:
115
+ - test/connection_test.rb
116
+ - test/test_helper.rb