webhook_stopwatch_client 0.1.1 → 0.1.3
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/lib/webhook_stopwatch/client.rb +13 -5
- data/spec/lib/webhook_stopwatch/client_spec.rb +16 -4
- data/webhook_stopwatch_client.gemspec +2 -3
- metadata +108 -118
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'redis'
|
2
|
-
require '
|
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
|
-
|
28
|
-
|
29
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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 "
|
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
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
35
|
-
|
36
|
-
|
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
|
-
|
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
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
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
|
-
|
68
|
-
|
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
|
-
|
79
|
-
|
80
|
-
|
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
|
-
|
116
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
160
|
-
|
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
|
-
|
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.
|
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:
|