rasti-web-broadcaster 0.1.0 → 1.1.2

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
- SHA1:
3
- metadata.gz: c5ea9872ad3ad27ea065c433a32b300353bf158f
4
- data.tar.gz: c617495332f8606763045bfa2215dbb15b87af31
2
+ SHA256:
3
+ metadata.gz: 0e5290c1fe92680bd88bd05f57f91b1d49a6848516865a6da8cfdb8d47cf6f44
4
+ data.tar.gz: eef7f1069f999eddd07fe89a7d6059e95bd669fbae2030f75d2fef0b180bf2b5
5
5
  SHA512:
6
- metadata.gz: bb1500dd98e5a7f7bd2237778152091081460517a7fe6d9099557b9a9f16ed44703f277429e38d9eeaa3a5a6772abee95c3325710e2c21bda03a7bb8a991f3ba
7
- data.tar.gz: b387a4fc765699f4cb866e2338ecdcce9ee2114d74cafae042a7b88e6ac38b865ace9ac9ec0267aa6601a6c9cc01ff416087070f9fe87c401db681ffdfbcfce2
6
+ metadata.gz: db5ca61f44dcb3ebaab5557cca6c245a8e7bccca22833b2aaa0aa38428a0baa5e0c9b0f7c8133ac7fb7e132a2ee173d39e4135a486b747209ed90cadd2d71b60
7
+ data.tar.gz: 06bebe40478194b3dceea7fd7a2b670cd75997630170d7ab54b72f7142c57bcdaf3b94a2d6969bf26de1f3c3eeddd581a2bbe338fe205cf251fe14c6cc6db313
data/.travis.yml CHANGED
@@ -1,13 +1,23 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
- - 1.9.3
4
4
  - 2.0
5
5
  - 2.1
6
6
  - 2.2
7
- - 2.3.0
8
- - 2.4.0
9
- - jruby
10
- before_install:
11
- - gem install bundler
7
+ - 2.3
8
+ - 2.4
9
+ - 2.5
10
+ - 2.6
11
+ - 2.7
12
+ - jruby-9.2.9.0
13
+ - ruby-head
14
+ - jruby-head
15
+
16
+ matrix:
17
+ fast_finish: true
18
+ allow_failures:
19
+ - rvm: ruby-head
20
+ - rvm: jruby-head
21
+
12
22
  services:
13
23
  - redis-server
data/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![Build Status](https://travis-ci.org/gabynaiman/rasti-web-broadcaster.svg?branch=master)](https://travis-ci.org/gabynaiman/rasti-web-broadcaster)
5
5
  [![Coverage Status](https://coveralls.io/repos/gabynaiman/rasti-web-broadcaster/badge.svg?branch=master)](https://coveralls.io/r/gabynaiman/rasti-web-broadcaster?branch=master)
6
6
  [![Code Climate](https://codeclimate.com/github/gabynaiman/rasti-web-broadcaster.svg)](https://codeclimate.com/github/gabynaiman/rasti-web-broadcaster)
7
- [![Dependency Status](https://gemnasium.com/gabynaiman/rasti-web-broadcaster.svg)](https://gemnasium.com/gabynaiman/rasti-web-broadcaster)
8
7
 
9
8
  Enable server sent events with rack middleware implemented over Faye and Broadcaster (Redis Pub/Sub)
10
9
 
@@ -30,7 +29,7 @@ Or install it yourself as:
30
29
  ```ruby
31
30
  Rasti::Web::Broadcaster.configure do |config|
32
31
  config.id = 'AppName'
33
- config.redis_url = "redis://#{ENV['REDIS_HOST']}:#{ENV['REDIS_PORT']}"
32
+ config.redis_settings = "redis://#{ENV['REDIS_HOST']}:#{ENV['REDIS_PORT']}"
34
33
  config.logger = Logger.new "/log/#{ENV['RACK_ENV']}.log"
35
34
  end
36
35
  ```
@@ -38,6 +37,9 @@ end
38
37
  ### Rack middleware
39
38
  ```ruby
40
39
  use Rasti::Web::Broadcaster
40
+
41
+ headers = {'Access-Control-Allow-Origin' => '*'}
42
+ use Rasti::Web::Broadcaster, headers
41
43
  ```
42
44
 
43
45
  ### Publishing events from the web
@@ -51,7 +53,7 @@ Rasti::Web::Broadcaster.publish channel_id, data: 'hello' # string or json
51
53
  ```ruby
52
54
  require 'broadcaster'
53
55
 
54
- broadcaster = Broadcaster.new id: 'AppName', redis_url: "redis://#{ENV['REDIS_HOST']}:#{ENV['REDIS_PORT']}"
56
+ broadcaster = Broadcaster.new id: 'AppName', redis_settings: "redis://#{ENV['REDIS_HOST']}:#{ENV['REDIS_PORT']}"
55
57
 
56
58
  broadcaster.publish channel_id, data: 'hello'
57
59
  ```
@@ -3,6 +3,7 @@ require 'broadcaster'
3
3
  require 'class_config'
4
4
 
5
5
  require_relative 'broadcaster/safe_event_machine'
6
+ require_relative 'broadcaster/safe_rack_lint'
6
7
  require_relative 'broadcaster/version'
7
8
 
8
9
  module Rasti
@@ -11,9 +12,12 @@ module Rasti
11
12
 
12
13
  extend ClassConfig
13
14
 
14
- attr_config :id, 'rasti.web.broadcaster'
15
- attr_config :redis_url, 'redis://localhost:6379'
16
- attr_config :logger, Logger.new(STDOUT)
15
+ attr_config :id, 'rasti.web.broadcaster'
16
+ attr_config :redis_client, Redic
17
+ attr_config :redis_settings, 'redis://localhost:6379'
18
+ attr_config :logger, Logger.new(STDOUT)
19
+
20
+ @mutex = Mutex.new
17
21
 
18
22
  class << self
19
23
 
@@ -26,18 +30,21 @@ module Rasti
26
30
  private
27
31
 
28
32
  def broadcaster
29
- @broadcaster ||= ::Broadcaster.new configuration
33
+ @mutex.synchronize do
34
+ @broadcaster ||= ::Broadcaster.new configuration
35
+ end
30
36
  end
31
37
 
32
38
  end
33
39
 
34
- def initialize(app)
40
+ def initialize(app, headers={})
35
41
  @app = app
42
+ @headers = headers
36
43
  end
37
44
 
38
45
  def call(env)
39
46
  if Faye::EventSource.eventsource? env
40
- event_source = Faye::EventSource.new env
47
+ event_source = Faye::EventSource.new env, headers: @headers
41
48
  channel = env['PATH_INFO'][1..-1]
42
49
 
43
50
  subscription_id = self.class.subscribe channel do |message|
@@ -0,0 +1,7 @@
1
+ if defined?(Rack::Lint::HijackWrapper) && !Rack::Lint::HijackWrapper.instance_methods.include?(:to_int)
2
+ class Rack::Lint::HijackWrapper
3
+ def to_int
4
+ @io.to_i
5
+ end
6
+ end
7
+ end
@@ -1,7 +1,7 @@
1
1
  module Rasti
2
2
  module Web
3
3
  class Broadcaster
4
- VERSION = '0.1.0'
4
+ VERSION = '1.1.2'
5
5
  end
6
6
  end
7
7
  end
@@ -18,13 +18,12 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_runtime_dependency 'faye-websocket', '~> 0.10'
22
- spec.add_runtime_dependency 'broadcaster', '~> 0.1'
21
+ spec.add_runtime_dependency 'faye-websocket', '~> 0.11'
22
+ spec.add_runtime_dependency 'broadcaster', '~> 1.0', '>= 1.0.2'
23
23
  spec.add_runtime_dependency 'class_config', '~> 0.0'
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.12'
26
- spec.add_development_dependency 'rake', '~> 11.0'
27
- spec.add_development_dependency 'minitest', '~> 5.0'
25
+ spec.add_development_dependency 'rake', '~> 12.0'
26
+ spec.add_development_dependency 'minitest', '~> 5.0', '< 5.11'
28
27
  spec.add_development_dependency 'minitest-colorin', '~> 0.1'
29
28
  spec.add_development_dependency 'minitest-line', '~> 0.6'
30
29
  spec.add_development_dependency 'simplecov', '~> 0.12'
@@ -32,13 +31,7 @@ Gem::Specification.new do |spec|
32
31
  spec.add_development_dependency 'pry-nav', '~> 0.2'
33
32
  spec.add_development_dependency 'rack-test', '~> 0.6'
34
33
 
35
- if RUBY_VERSION < '2'
36
- spec.add_development_dependency 'term-ansicolor', '~> 1.3.0'
37
- spec.add_development_dependency 'tins', '~> 1.6.0'
38
- spec.add_development_dependency 'json', '~> 1.8'
39
- end
40
-
41
34
  if RUBY_VERSION < '2.2.2'
42
35
  spec.add_development_dependency 'rack', '< 2'
43
36
  end
44
- end
37
+ end
@@ -8,6 +8,7 @@ describe Rasti::Web::Broadcaster do
8
8
  event << 'Content-Type: text/event-stream'
9
9
  event << 'Cache-Control: no-cache, no-store'
10
10
  event << 'Connection: close'
11
+ event << 'Access-Control-Allow-Origin: *'
11
12
  event << ''
12
13
  event << 'retry: 5000'
13
14
  event << ''
@@ -33,7 +34,11 @@ describe Rasti::Web::Broadcaster do
33
34
  end
34
35
  end
35
36
 
36
- let(:app) { Rasti::Web::Broadcaster.new ->(env) { [200, {}, ['hello']] } }
37
+ let(:headers) { {'Access-Control-Allow-Origin' => '*'} }
38
+
39
+ let(:inner_app) { ->(env) { [200, {}, ['hello']] } }
40
+
41
+ let(:app) { Rasti::Web::Broadcaster.new inner_app, headers }
37
42
 
38
43
  it 'Handle events' do
39
44
  env = Rack::MockRequest.env_for '/channel_1', 'HTTP_ACCEPT' => 'text/event-stream',
@@ -41,12 +46,12 @@ describe Rasti::Web::Broadcaster do
41
46
 
42
47
  event_source = nil
43
48
  events = []
44
-
49
+
45
50
  env['async.callback'] = proc do |(status, headers, body)|
46
51
  event_source = body.instance_variable_get(:@socket_object)
47
52
  body.each { |e| events << e }
48
53
  end
49
-
54
+
50
55
  Rasti::Web::Broadcaster.publish 'channel_1', data: 'message 0'
51
56
 
52
57
  app.call env
@@ -61,7 +66,7 @@ describe Rasti::Web::Broadcaster do
61
66
 
62
67
  events.must_equal [
63
68
  event_headers,
64
- event_for(data: 'message 1', event: 'event_1', id: 1),
69
+ event_for(data: 'message 1', event: 'event_1', id: 1),
65
70
  event_for(data: 'message 3')
66
71
  ]
67
72
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rasti-web-broadcaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-13 00:00:00.000000000 Z
11
+ date: 2021-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faye-websocket
@@ -16,28 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.10'
19
+ version: '0.11'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.10'
26
+ version: '0.11'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: broadcaster
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.1'
33
+ version: '1.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.0.2
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - "~>"
39
42
  - !ruby/object:Gem::Version
40
- version: '0.1'
43
+ version: '1.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.0.2
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: class_config
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -52,34 +58,20 @@ dependencies:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0.0'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.12'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.12'
69
61
  - !ruby/object:Gem::Dependency
70
62
  name: rake
71
63
  requirement: !ruby/object:Gem::Requirement
72
64
  requirements:
73
65
  - - "~>"
74
66
  - !ruby/object:Gem::Version
75
- version: '11.0'
67
+ version: '12.0'
76
68
  type: :development
77
69
  prerelease: false
78
70
  version_requirements: !ruby/object:Gem::Requirement
79
71
  requirements:
80
72
  - - "~>"
81
73
  - !ruby/object:Gem::Version
82
- version: '11.0'
74
+ version: '12.0'
83
75
  - !ruby/object:Gem::Dependency
84
76
  name: minitest
85
77
  requirement: !ruby/object:Gem::Requirement
@@ -87,6 +79,9 @@ dependencies:
87
79
  - - "~>"
88
80
  - !ruby/object:Gem::Version
89
81
  version: '5.0'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '5.11'
90
85
  type: :development
91
86
  prerelease: false
92
87
  version_requirements: !ruby/object:Gem::Requirement
@@ -94,6 +89,9 @@ dependencies:
94
89
  - - "~>"
95
90
  - !ruby/object:Gem::Version
96
91
  version: '5.0'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '5.11'
97
95
  - !ruby/object:Gem::Dependency
98
96
  name: minitest-colorin
99
97
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +196,7 @@ files:
198
196
  - lib/rasti-web-broadcaster.rb
199
197
  - lib/rasti/web/broadcaster.rb
200
198
  - lib/rasti/web/broadcaster/safe_event_machine.rb
199
+ - lib/rasti/web/broadcaster/safe_rack_lint.rb
201
200
  - lib/rasti/web/broadcaster/version.rb
202
201
  - rasti-web-broadcaster.gemspec
203
202
  - spec/coverage_helper.rb
@@ -222,8 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
221
  - !ruby/object:Gem::Version
223
222
  version: '0'
224
223
  requirements: []
225
- rubyforge_project:
226
- rubygems_version: 2.5.1
224
+ rubygems_version: 3.0.6
227
225
  signing_key:
228
226
  specification_version: 4
229
227
  summary: Rack middleware for server sent events