pusher 0.3.0 → 0.3.1
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.
- data/README.md +5 -0
- data/Rakefile +20 -20
- data/VERSION +1 -1
- data/lib/pusher.rb +15 -6
- data/spec/pusher_spec.rb +102 -0
- data/spec/spec.opts +1 -0
- data/{test/helper.rb → spec/spec_helper.rb} +5 -7
- metadata +23 -8
- data/test/test_pusher.rb +0 -7
data/README.md
CHANGED
@@ -12,6 +12,11 @@ Request pusher credentials from <http://pusherapp.com> and configure the gem
|
|
12
12
|
Trigger an event
|
13
13
|
|
14
14
|
Pusher['arbitrary-channel-name'].trigger({:some => 'data'})
|
15
|
+
|
16
|
+
Logging
|
17
|
+
Errors are logger to Pusher.logger. You can set that to any logger you want, ie:
|
18
|
+
|
19
|
+
Pusher.logger = Rails.logger
|
15
20
|
|
16
21
|
Copyright
|
17
22
|
---------
|
data/Rakefile
CHANGED
@@ -6,13 +6,14 @@ begin
|
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "pusher"
|
8
8
|
gem.summary = %Q{Pusher App client}
|
9
|
-
gem.description = %Q{Pusher App
|
9
|
+
gem.description = %Q{Pusher App integration: Use to make your app send messages to Pusher}
|
10
10
|
gem.email = "info@new-bamboo.co.uk"
|
11
11
|
gem.homepage = "http://github.com/newbamboo/pusher-gem"
|
12
12
|
gem.authors = ["Wildfalcon", "Ismasan"]
|
13
13
|
# gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
14
14
|
gem.add_dependency "rest-client"
|
15
15
|
gem.add_dependency "json"
|
16
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
16
17
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
17
18
|
end
|
18
19
|
Jeweler::GemcutterTasks.new
|
@@ -20,36 +21,35 @@ rescue LoadError
|
|
20
21
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
21
22
|
end
|
22
23
|
|
23
|
-
require 'rake/
|
24
|
-
Rake::
|
25
|
-
|
26
|
-
|
27
|
-
test.verbose = true
|
24
|
+
require 'spec/rake/spectask'
|
25
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
26
|
+
spec.libs << 'lib' << 'spec'
|
27
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
30
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
31
|
+
spec.libs << 'lib' << 'spec'
|
32
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
33
|
+
spec.rcov = true
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
38
|
+
spec.libs << 'lib' << 'spec'
|
39
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
40
|
+
spec.rcov = true
|
41
41
|
end
|
42
42
|
|
43
|
-
task :
|
43
|
+
task :spec => :check_dependencies
|
44
44
|
|
45
|
-
task :default => :
|
45
|
+
task :default => :spec
|
46
46
|
|
47
47
|
require 'rake/rdoctask'
|
48
48
|
Rake::RDocTask.new do |rdoc|
|
49
49
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
50
50
|
|
51
51
|
rdoc.rdoc_dir = 'rdoc'
|
52
|
-
rdoc.title = "
|
52
|
+
rdoc.title = "test #{version}"
|
53
53
|
rdoc.rdoc_files.include('README*')
|
54
54
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
55
55
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/lib/pusher.rb
CHANGED
@@ -1,20 +1,29 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'uri'
|
3
3
|
require 'net/http'
|
4
|
+
require 'logger'
|
4
5
|
|
5
6
|
class Pusher
|
6
|
-
|
7
|
+
|
8
|
+
class ArgumentError < ::ArgumentError
|
9
|
+
def message
|
10
|
+
'You must configure both Pusher.key and Pusher.secret in order to authenticate your Pusher app'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
7
14
|
class << self
|
8
|
-
attr_accessor :host, :port
|
15
|
+
attr_accessor :host, :port, :logger
|
9
16
|
attr_writer :key, :secret
|
10
17
|
end
|
11
18
|
|
12
|
-
self.host
|
13
|
-
self.port
|
19
|
+
self.host = 'api.pusherapp.com'
|
20
|
+
self.port = 80
|
21
|
+
self.logger = Logger.new($STDOUT)
|
14
22
|
|
15
23
|
def self.[](channel_id)
|
24
|
+
raise ArgumentError unless (@key && @secret)
|
16
25
|
@channels ||= {}
|
17
|
-
@channels[channel_id.to_s]
|
26
|
+
@channels[channel_id.to_s] = Channel.new(@key, channel_id)
|
18
27
|
end
|
19
28
|
|
20
29
|
class Channel
|
@@ -51,7 +60,7 @@ class Pusher
|
|
51
60
|
private
|
52
61
|
|
53
62
|
def handle_error(e)
|
54
|
-
|
63
|
+
self.logger.error(e.backtrace.join("\n"))
|
55
64
|
end
|
56
65
|
|
57
66
|
end
|
data/spec/pusher_spec.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Pusher do
|
4
|
+
|
5
|
+
describe 'configuration' do
|
6
|
+
it 'should be preconfigured for api host' do
|
7
|
+
Pusher.host.should == 'api.pusherapp.com'
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should be preconfigured for pi port 80' do
|
11
|
+
Pusher.port.should == 80
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'unconfigured' do
|
16
|
+
describe 'with missing key and secret' do
|
17
|
+
it 'should raise exception' do
|
18
|
+
lambda {
|
19
|
+
Pusher['test-channel']
|
20
|
+
}.should raise_error(Pusher::ArgumentError)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'with missing key' do
|
25
|
+
before {Pusher.secret = '1234567890'}
|
26
|
+
it 'should raise exception' do
|
27
|
+
lambda {
|
28
|
+
Pusher['test-channel']
|
29
|
+
}.should raise_error(Pusher::ArgumentError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'with missing secret' do
|
34
|
+
before {Pusher.key = '1234567890'}
|
35
|
+
it 'should raise exception' do
|
36
|
+
lambda {
|
37
|
+
Pusher['test-channel']
|
38
|
+
}.should raise_error(Pusher::ArgumentError)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
describe 'configured' do
|
45
|
+
before do
|
46
|
+
Pusher.key = '12345678900000001'
|
47
|
+
Pusher.secret = '12345678900000001'
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '.[]' do
|
51
|
+
before do
|
52
|
+
@channel = Pusher['test_channel']
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should return a new channel' do
|
56
|
+
@channel.should be_kind_of(Pusher::Channel)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe 'calling Channel#trigger' do
|
61
|
+
|
62
|
+
before do
|
63
|
+
@http = mock('HTTP', :post => 'posting')
|
64
|
+
Net::HTTP.stub!(:new).and_return @http
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should configure HTTP library to talk to pusher API' do
|
68
|
+
Net::HTTP.should_receive(:new).with('api.pusherapp.com', 80).and_return @http
|
69
|
+
Pusher['test_channel'].trigger(
|
70
|
+
'new_event',
|
71
|
+
'Some data'
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'POSTing to api.pusherapp.com' do
|
76
|
+
|
77
|
+
it 'should POST JSON to p# usher API' do
|
78
|
+
@http.should_receive(:post) do |*args|
|
79
|
+
args[0].should == '/app/12345678900000001/channel/test_channel'
|
80
|
+
parsed = JSON.parse(args[1])
|
81
|
+
parsed['event'].should == 'new_event'
|
82
|
+
parsed['data']['name'].should == 'Pusher'
|
83
|
+
parsed['data']['last_name'].should == 'App'
|
84
|
+
parsed['socket_id'].should == nil
|
85
|
+
args[2].should == {'Content-Type'=> 'application/json'}
|
86
|
+
end
|
87
|
+
Pusher['test_channel'].trigger(
|
88
|
+
'new_event',
|
89
|
+
:name => 'Pusher',
|
90
|
+
:last_name => 'App'
|
91
|
+
)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
after do
|
99
|
+
Pusher.key = nil
|
100
|
+
Pusher.secret = nil
|
101
|
+
end
|
102
|
+
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'shoulda'
|
4
|
-
|
5
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
7
3
|
require 'pusher'
|
8
|
-
|
9
|
-
|
4
|
+
require 'spec'
|
5
|
+
require 'spec/autorun'
|
6
|
+
Spec::Runner.configure do |config|
|
7
|
+
|
10
8
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 1
|
9
|
+
version: 0.3.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Wildfalcon
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-03-
|
18
|
+
date: 2010-03-28 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -42,7 +42,21 @@ dependencies:
|
|
42
42
|
version: "0"
|
43
43
|
type: :runtime
|
44
44
|
version_requirements: *id002
|
45
|
-
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: rspec
|
47
|
+
prerelease: false
|
48
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
segments:
|
53
|
+
- 1
|
54
|
+
- 2
|
55
|
+
- 9
|
56
|
+
version: 1.2.9
|
57
|
+
type: :development
|
58
|
+
version_requirements: *id003
|
59
|
+
description: "Pusher App integration: Use to make your app send messages to Pusher"
|
46
60
|
email: info@new-bamboo.co.uk
|
47
61
|
executables: []
|
48
62
|
|
@@ -59,8 +73,9 @@ files:
|
|
59
73
|
- Rakefile
|
60
74
|
- VERSION
|
61
75
|
- lib/pusher.rb
|
62
|
-
-
|
63
|
-
-
|
76
|
+
- spec/pusher_spec.rb
|
77
|
+
- spec/spec.opts
|
78
|
+
- spec/spec_helper.rb
|
64
79
|
has_rdoc: true
|
65
80
|
homepage: http://github.com/newbamboo/pusher-gem
|
66
81
|
licenses: []
|
@@ -92,5 +107,5 @@ signing_key:
|
|
92
107
|
specification_version: 3
|
93
108
|
summary: Pusher App client
|
94
109
|
test_files:
|
95
|
-
-
|
96
|
-
-
|
110
|
+
- spec/pusher_spec.rb
|
111
|
+
- spec/spec_helper.rb
|