webhook_stopwatch_client 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  require 'redis'
2
- require 'multi_json'
2
+ require 'oj'
3
3
 
4
4
  module WebhookStopwatch
5
5
  class Client
@@ -21,23 +21,31 @@ module WebhookStopwatch
21
21
  publish_event("stop", message_id, timestamp)
22
22
  end
23
23
 
24
+ def ping
25
+ publish(encode_json({}))
26
+ end
27
+
24
28
  private
25
29
 
26
30
  def publish_event(event, message_id, timestamp)
27
- redis.publish(channel, encode_json({"message_id" => message_id,
28
- "timestamp" => timestamp,
29
- "event" => event}))
31
+ publish(encode_json("message_id" => message_id,
32
+ "timestamp" => timestamp,
33
+ "event" => event))
30
34
  true
31
35
  rescue Exception
32
36
  return false
33
37
  end
34
38
 
39
+ def publish(message)
40
+ redis.publish(channel, message)
41
+ end
42
+
35
43
  def channel
36
44
  "webhook_stopwatch:events"
37
45
  end
38
46
 
39
47
  def encode_json(payload)
40
- MultiJson.dump(payload)
48
+ Oj.dump(payload)
41
49
  end
42
50
  end
43
51
  end
@@ -15,7 +15,7 @@ describe WebhookStopwatch::Client do
15
15
  Redis.should_not_receive(:new)
16
16
  redis.should_receive(:publish).
17
17
  with("webhook_stopwatch:events",
18
- MultiJson.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "start"}))
18
+ Oj.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "start"}))
19
19
  WebhookStopwatch::Client.new(redis).start(123, 1000000)
20
20
  end
21
21
 
@@ -27,7 +27,7 @@ describe WebhookStopwatch::Client do
27
27
  it "publishes a message to redis" do
28
28
  redis.should_receive(:publish).
29
29
  with("webhook_stopwatch:events",
30
- MultiJson.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "start"}))
30
+ Oj.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "start"}))
31
31
  subject.start(123, 1000000)
32
32
  end
33
33
 
@@ -51,7 +51,7 @@ describe WebhookStopwatch::Client do
51
51
  Redis.should_not_receive(:new)
52
52
  redis.should_receive(:publish).
53
53
  with("webhook_stopwatch:events",
54
- MultiJson.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "stop"}))
54
+ Oj.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "stop"}))
55
55
  WebhookStopwatch::Client.new(redis).stop(123, 1000000)
56
56
  end
57
57
 
@@ -63,7 +63,7 @@ describe WebhookStopwatch::Client do
63
63
  it "publishes a message to redis" do
64
64
  redis.should_receive(:publish).
65
65
  with("webhook_stopwatch:events",
66
- MultiJson.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "stop"}))
66
+ Oj.dump({"message_id" => 123, "timestamp" => 1000000, "event" => "stop"}))
67
67
 
68
68
  subject.stop(123, 1000000)
69
69
  end
@@ -82,4 +82,16 @@ describe WebhookStopwatch::Client do
82
82
  end
83
83
  end
84
84
  end
85
+
86
+ describe "#ping" do
87
+ it "sends an empty event" do
88
+ redis.should_receive(:publish).with("webhook_stopwatch:events", "{}")
89
+
90
+ subject.ping
91
+ end
92
+
93
+ it "returns the subscriber count" do
94
+ subject.ping.should == 1
95
+ end
96
+ end
85
97
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "webhook_stopwatch_client"
5
- spec.version = "0.1.1"
5
+ spec.version = "0.1.3"
6
6
  spec.authors = ["Donald Plummer", "Michael Xavier"]
7
7
  spec.email = ["donald@crystalcommerce.com", "xavier@crystalcommerce.com"]
8
8
  spec.description = %q{Client for sending events to webhook stopwatch}
@@ -15,9 +15,8 @@ Gem::Specification.new do |spec|
15
15
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
16
  spec.require_paths = ["lib"]
17
17
 
18
- spec.add_dependency "faraday"
19
18
  spec.add_dependency "redis"
20
- spec.add_dependency "multi_json"
19
+ spec.add_dependency "oj"
21
20
 
22
21
  spec.add_development_dependency "bundler", "~> 1.3"
23
22
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,137 +1,119 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: webhook_stopwatch_client
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
4
5
  prerelease:
5
- version: 0.1.1
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 3
10
+ version: 0.1.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Donald Plummer
9
14
  - Michael Xavier
10
15
  autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
- date: 2013-03-18 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2013-03-20 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: redis
16
23
  prerelease: false
17
- type: :runtime
18
- name: faraday
19
- version_requirements: !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
20
25
  none: false
21
- requirements:
22
- - - ! '>='
23
- - !ruby/object:Gem::Version
24
- version: '0'
25
- requirement: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ! '>='
29
- - !ruby/object:Gem::Version
30
- version: '0'
31
- - !ruby/object:Gem::Dependency
32
- prerelease: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
33
  type: :runtime
34
- name: redis
35
- version_requirements: !ruby/object:Gem::Requirement
36
- none: false
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- requirement: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- - !ruby/object:Gem::Dependency
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: oj
48
37
  prerelease: false
49
- type: :runtime
50
- name: multi_json
51
- version_requirements: !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: '0'
57
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &id002 !ruby/object:Gem::Requirement
58
39
  none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- - !ruby/object:Gem::Dependency
64
- prerelease: false
65
- type: :development
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
66
50
  name: bundler
67
- version_requirements: !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ~>
71
- - !ruby/object:Gem::Version
72
- version: '1.3'
73
- requirement: !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
74
53
  none: false
75
- requirements:
54
+ requirements:
76
55
  - - ~>
77
- - !ruby/object:Gem::Version
78
- version: '1.3'
79
- - !ruby/object:Gem::Dependency
80
- prerelease: false
56
+ - !ruby/object:Gem::Version
57
+ hash: 9
58
+ segments:
59
+ - 1
60
+ - 3
61
+ version: "1.3"
81
62
  type: :development
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
82
65
  name: rake
83
- version_requirements: !ruby/object:Gem::Requirement
84
- none: false
85
- requirements:
86
- - - ! '>='
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- requirement: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- - !ruby/object:Gem::Dependency
96
66
  prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
97
76
  type: :development
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
98
79
  name: guard-rspec
99
- version_requirements: !ruby/object:Gem::Requirement
100
- none: false
101
- requirements:
102
- - - ! '>='
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- requirement: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
80
  prerelease: false
81
+ requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
113
90
  type: :development
91
+ version_requirements: *id005
92
+ - !ruby/object:Gem::Dependency
114
93
  name: rspec
115
- version_requirements: !ruby/object:Gem::Requirement
116
- none: false
117
- requirements:
118
- - - ! '>='
119
- - !ruby/object:Gem::Version
120
- version: '0'
121
- requirement: !ruby/object:Gem::Requirement
94
+ prerelease: false
95
+ requirement: &id006 !ruby/object:Gem::Requirement
122
96
  none: false
123
- requirements:
124
- - - ! '>='
125
- - !ruby/object:Gem::Version
126
- version: '0'
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ type: :development
105
+ version_requirements: *id006
127
106
  description: Client for sending events to webhook stopwatch
128
- email:
107
+ email:
129
108
  - donald@crystalcommerce.com
130
109
  - xavier@crystalcommerce.com
131
110
  executables: []
111
+
132
112
  extensions: []
113
+
133
114
  extra_rdoc_files: []
134
- files:
115
+
116
+ files:
135
117
  - .gitignore
136
118
  - .rspec
137
119
  - Gemfile
@@ -144,32 +126,40 @@ files:
144
126
  - spec/lib/webhook_stopwatch/client_spec.rb
145
127
  - spec/spec_helper.rb
146
128
  - webhook_stopwatch_client.gemspec
147
- homepage: ''
148
- licenses:
129
+ homepage: ""
130
+ licenses:
149
131
  - MIT
150
132
  post_install_message:
151
133
  rdoc_options: []
152
- require_paths:
134
+
135
+ require_paths:
153
136
  - lib
154
- required_ruby_version: !ruby/object:Gem::Requirement
137
+ required_ruby_version: !ruby/object:Gem::Requirement
155
138
  none: false
156
- requirements:
157
- - - ! '>='
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ hash: 3
143
+ segments:
144
+ - 0
145
+ version: "0"
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
147
  none: false
162
- requirements:
163
- - - ! '>='
164
- - !ruby/object:Gem::Version
165
- version: '0'
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ hash: 3
152
+ segments:
153
+ - 0
154
+ version: "0"
166
155
  requirements: []
156
+
167
157
  rubyforge_project:
168
- rubygems_version: 1.8.25
158
+ rubygems_version: 1.8.17
169
159
  signing_key:
170
160
  specification_version: 3
171
161
  summary: Client for sending events to webhook stopwatch
172
- test_files:
162
+ test_files:
173
163
  - spec/lib/webhook_stopwatch/client_spec.rb
174
164
  - spec/spec_helper.rb
175
165
  has_rdoc: