fc-reminder 0.1.1 → 0.1.2
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 +4 -4
- data/.travis.yml +7 -1
- data/Gemfile +11 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/Rakefile +0 -4
- data/fc-reminder.gemspec +1 -4
- data/lib/fc-reminder/gateways/base.rb +1 -1
- data/lib/fc-reminder/gateways/twilio.rb +1 -1
- data/lib/fc-reminder/providers/base.rb +1 -1
- data/lib/fc-reminder/providers/livescore.rb +6 -6
- data/lib/fc-reminder/reminder.rb +4 -4
- data/lib/fc-reminder/runner.rb +4 -3
- data/lib/fc-reminder/version.rb +1 -1
- data/spec/fc-reminder/gateways/base_spec.rb +1 -1
- data/spec/fc-reminder/providers/base_spec.rb +2 -2
- data/spec/fc-reminder/providers/livescore_spec.rb +7 -7
- data/spec/fc-reminder/reminder_spec.rb +6 -9
- data/spec/fc-reminder/runner_spec.rb +8 -8
- data/spec/spec_helper.rb +8 -0
- metadata +20 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cca159110a9959b8f055afa009ff97423fb341ea
|
4
|
+
data.tar.gz: 6609136ee279419659d6a0418412b10c6e56737d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fe3acfc2161d6b9e401202077c8cc0b7ba1adb7411ca19a1f8139204ab387e22e63db429035ebe0c0156d20b89cd5f8c24f5923240ed99e7d7cc24e0c6cf915
|
7
|
+
data.tar.gz: 344c80303c1c06a00bf1d5ab77a6404524c9acde24160ed584dc9fda7c69f7f9eb01a38a3c2ac6ce6a776b438b2e6afdfb0a8039503f773e4306434181dc56e7
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -72,6 +72,6 @@ Usage: fc-reminder [options] start|stop|restart|run
|
|
72
72
|
|
73
73
|
## Copyright and License
|
74
74
|
|
75
|
-
Copyright (c) 2013, Kamil Kieliszczyk and Contributors. All Rights Reserved.
|
75
|
+
Copyright (c) 2013-2014, Kamil Kieliszczyk and Contributors. All Rights Reserved.
|
76
76
|
|
77
77
|
This project is licenced under the [BSD 3-Clause License](LICENSE).
|
data/Rakefile
CHANGED
data/fc-reminder.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.authors = ['Kamil Kieliszczyk']
|
8
8
|
spec.email = ['kamil@kieliszczyk.net']
|
9
9
|
spec.description = 'Simple reminder about an upcoming football game'
|
10
|
-
spec.summary =
|
10
|
+
spec.summary = spec.description
|
11
11
|
spec.homepage = 'https://github.com/kiela/fc-reminder'
|
12
12
|
|
13
13
|
spec.platform = Gem::Platform::RUBY
|
@@ -25,7 +25,4 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency 'clockwork', '~> 0.7.0'
|
26
26
|
|
27
27
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
28
|
-
spec.add_development_dependency 'rake'
|
29
|
-
spec.add_development_dependency 'rspec', '~> 3.0.0.beta1'
|
30
|
-
spec.add_development_dependency 'fakeweb'
|
31
28
|
end
|
@@ -7,14 +7,14 @@ module FCReminder
|
|
7
7
|
"#{BASE_URL}/soccer/#{Time.now.strftime("%Y-%m-%d")}"
|
8
8
|
end
|
9
9
|
|
10
|
-
def run(team_name
|
11
|
-
cell = search(
|
10
|
+
def run(team_name)
|
11
|
+
cell = search(client.get(url), team_name.downcase)
|
12
12
|
cell.nil? ? super : prepare_output_from(cell)
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
def search(page
|
17
|
+
def search(page, team_name)
|
18
18
|
page.search(".content table.league-table td").find do |td|
|
19
19
|
has_team?(td) and team_match?(td, team_name)
|
20
20
|
end
|
@@ -30,12 +30,12 @@ module FCReminder
|
|
30
30
|
|
31
31
|
def prepare_output_from(cell)
|
32
32
|
r = Hash.new
|
33
|
-
r.merge!(fetch(
|
34
|
-
r.merge!(fetch(
|
33
|
+
r.merge!(fetch(league_attrs, cell.parent.parent))
|
34
|
+
r.merge!(fetch(match_attrs, cell.parent))
|
35
35
|
r
|
36
36
|
end
|
37
37
|
|
38
|
-
def fetch(attrs
|
38
|
+
def fetch(attrs, source)
|
39
39
|
attrs.inject({}) { |h,(k,v)| h[k] = source.search(v).text.strip; h }
|
40
40
|
end
|
41
41
|
|
data/lib/fc-reminder/reminder.rb
CHANGED
@@ -10,7 +10,7 @@ module FCReminder
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def provider=(obj)
|
13
|
-
if obj.kind_of? Providers::Base
|
13
|
+
if obj.kind_of? FCReminder::Providers::Base
|
14
14
|
@provider = obj
|
15
15
|
else
|
16
16
|
raise 'Provider should inherits from FCReminder::Providers::Base'
|
@@ -18,7 +18,7 @@ module FCReminder
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def gateway=(obj)
|
21
|
-
if obj.kind_of? Gateways::Base
|
21
|
+
if obj.kind_of? FCReminder::Gateways::Base
|
22
22
|
@gateway = obj
|
23
23
|
else
|
24
24
|
raise 'Gateway should inherits from FCReminder::Gateways::Base'
|
@@ -27,8 +27,8 @@ module FCReminder
|
|
27
27
|
|
28
28
|
def run(&customization_block)
|
29
29
|
eval_block &customization_block
|
30
|
-
result = provider.run(team_name
|
31
|
-
gateway.send(recipient
|
30
|
+
result = provider.run(team_name)
|
31
|
+
gateway.send(recipient, result) unless result.empty?
|
32
32
|
end
|
33
33
|
|
34
34
|
private
|
data/lib/fc-reminder/runner.rb
CHANGED
@@ -48,9 +48,10 @@ module FCReminder
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def process_name(options)
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
[
|
52
|
+
PROCESS_NAME,
|
53
|
+
(options[:identifier] ? options[:identifier] : options[:team])
|
54
|
+
].join('.')
|
54
55
|
end
|
55
56
|
|
56
57
|
def daemonize_options(options)
|
data/lib/fc-reminder/version.rb
CHANGED
@@ -22,8 +22,8 @@ describe FCReminder::Providers::Base do
|
|
22
22
|
|
23
23
|
context "#run" do
|
24
24
|
it "returns empty instance of Hash" do
|
25
|
-
expect(provider.run(team_name
|
26
|
-
expect(provider.run(team_name
|
25
|
+
expect(provider.run(team_name)).to be_instance_of(Hash)
|
26
|
+
expect(provider.run(team_name)).to be_empty
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -18,25 +18,25 @@ describe FCReminder::Providers::LiveScore do
|
|
18
18
|
|
19
19
|
context "#run" do
|
20
20
|
context "there is no match that day" do
|
21
|
-
before
|
21
|
+
before { fake_page_without_match(provider.url) }
|
22
22
|
|
23
23
|
it "returns default value" do
|
24
|
-
default_value = FCReminder::Providers::Base.new.run(team_name
|
25
|
-
expect(provider.run(team_name
|
24
|
+
default_value = FCReminder::Providers::Base.new.run(team_name)
|
25
|
+
expect(provider.run(team_name)).to eq(default_value)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
context "there is a match that day" do
|
30
|
-
before
|
30
|
+
before { fake_page_with_match(provider.url) }
|
31
31
|
|
32
32
|
it "returns non-empty instance of Hash" do
|
33
|
-
expect(provider.run(team_name
|
34
|
-
expect(provider.run(team_name
|
33
|
+
expect(provider.run(team_name)).to be_an_instance_of(Hash)
|
34
|
+
expect(provider.run(team_name)).not_to be_empty
|
35
35
|
end
|
36
36
|
|
37
37
|
%w(country league time team1 team2).each do |attr|
|
38
38
|
it "has return value which includes #{attr}" do
|
39
|
-
expect(provider.run(team_name
|
39
|
+
expect(provider.run(team_name)).to have_key(attr.to_sym)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -74,8 +74,8 @@ describe FCReminder::Reminder do
|
|
74
74
|
|
75
75
|
context "#run" do
|
76
76
|
subject(:reminder) { FCReminder.build }
|
77
|
-
before
|
78
|
-
before
|
77
|
+
before { fake_page_with_match(reminder.provider.url) }
|
78
|
+
before { allow(reminder.gateway).to receive(:send) }
|
79
79
|
|
80
80
|
it "allows to set consumer data by using a block" do
|
81
81
|
expect(reminder.team_name).to be_nil
|
@@ -92,8 +92,8 @@ describe FCReminder::Reminder do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it "calls provider for data" do
|
95
|
-
reminder.provider.
|
96
|
-
expect(reminder.provider).to receive(:run).with(team_name
|
95
|
+
allow(reminder.provider).to receive(:run).and_return(Hash.new)
|
96
|
+
expect(reminder.provider).to receive(:run).with(team_name)
|
97
97
|
|
98
98
|
reminder.team_name = team_name
|
99
99
|
reminder.recipient = recipient
|
@@ -102,11 +102,8 @@ describe FCReminder::Reminder do
|
|
102
102
|
|
103
103
|
it "calls gateway for sending message" do
|
104
104
|
result = {foo: 'bar'}
|
105
|
-
reminder.provider.
|
106
|
-
expect(reminder.gateway).to receive(:send).with(
|
107
|
-
recipient: recipient,
|
108
|
-
data: result
|
109
|
-
)
|
105
|
+
allow(reminder.provider).to receive(:run).and_return(result)
|
106
|
+
expect(reminder.gateway).to receive(:send).with(recipient, result)
|
110
107
|
|
111
108
|
reminder.team_name = team_name
|
112
109
|
reminder.recipient = recipient
|
@@ -29,32 +29,32 @@ describe FCReminder::Runner do
|
|
29
29
|
|
30
30
|
context "#start" do
|
31
31
|
it "sets reminder" do
|
32
|
-
options = {daemon: false}
|
32
|
+
options = { daemon: false }
|
33
33
|
runner = FCReminder::Runner.new(options)
|
34
34
|
|
35
|
-
Clockwork.
|
36
|
-
runner.reminder.
|
37
|
-
runner.
|
35
|
+
allow(Clockwork).to receive(:every) { |&block| block.call }
|
36
|
+
allow(runner.reminder).to receive(:run)
|
37
|
+
allow(runner).to receive(:run)
|
38
38
|
|
39
39
|
expect(runner.reminder).to receive(:run)
|
40
40
|
runner.start
|
41
41
|
end
|
42
42
|
|
43
43
|
it "starts normal process" do
|
44
|
-
options = {daemon: false}
|
44
|
+
options = { daemon: false }
|
45
45
|
runner = FCReminder::Runner.new(options)
|
46
46
|
|
47
|
-
runner.
|
47
|
+
allow(runner).to receive(:run)
|
48
48
|
|
49
49
|
expect(runner).to receive(:run)
|
50
50
|
runner.start
|
51
51
|
end
|
52
52
|
|
53
53
|
it "starts daemon process" do
|
54
|
-
options = {daemon: true}
|
54
|
+
options = { daemon: true }
|
55
55
|
runner = FCReminder::Runner.new(options)
|
56
56
|
|
57
|
-
runner.
|
57
|
+
allow(runner).to receive(:daemonize)
|
58
58
|
|
59
59
|
expect(runner).to receive(:daemonize)
|
60
60
|
runner.start
|
data/spec/spec_helper.rb
CHANGED
@@ -4,3 +4,11 @@ $:.unshift File.join(GEM_ROOT, "lib")
|
|
4
4
|
require 'fc-reminder'
|
5
5
|
Dir[File.join(GEM_ROOT, "spec", "support", "**/*.rb")].each { |f| require f }
|
6
6
|
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.expect_with :rspec do |c|
|
9
|
+
c.syntax = :expect
|
10
|
+
end
|
11
|
+
|
12
|
+
config.filter_run focus: true
|
13
|
+
config.run_all_when_everything_filtered = true
|
14
|
+
end
|
metadata
CHANGED
@@ -1,141 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fc-reminder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kamil Kieliszczyk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 2.7.3
|
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
26
|
version: 2.7.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: twilio-ruby
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 3.11.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.11.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mixlib-cli
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.3.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.3.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: daemons
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 1.1.9
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.1.9
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: clockwork
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.7.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.7.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '1.3'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.3'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rake
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - '>='
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rspec
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ~>
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 3.0.0.beta1
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ~>
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 3.0.0.beta1
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: fakeweb
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '>='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - '>='
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
97
|
description: Simple reminder about an upcoming football game
|
140
98
|
email:
|
141
99
|
- kamil@kieliszczyk.net
|
@@ -144,9 +102,9 @@ executables:
|
|
144
102
|
extensions: []
|
145
103
|
extra_rdoc_files: []
|
146
104
|
files:
|
147
|
-
- .gitignore
|
148
|
-
- .rspec
|
149
|
-
- .travis.yml
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rspec"
|
107
|
+
- ".travis.yml"
|
150
108
|
- Gemfile
|
151
109
|
- LICENSE
|
152
110
|
- README.md
|
@@ -182,17 +140,17 @@ require_paths:
|
|
182
140
|
- lib
|
183
141
|
required_ruby_version: !ruby/object:Gem::Requirement
|
184
142
|
requirements:
|
185
|
-
- -
|
143
|
+
- - ">="
|
186
144
|
- !ruby/object:Gem::Version
|
187
145
|
version: '0'
|
188
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
147
|
requirements:
|
190
|
-
- -
|
148
|
+
- - ">="
|
191
149
|
- !ruby/object:Gem::Version
|
192
150
|
version: 1.3.6
|
193
151
|
requirements: []
|
194
152
|
rubyforge_project:
|
195
|
-
rubygems_version: 2.
|
153
|
+
rubygems_version: 2.2.0
|
196
154
|
signing_key:
|
197
155
|
specification_version: 4
|
198
156
|
summary: Simple reminder about an upcoming football game
|