playwhe 0.1.0 → 0.2.0
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 +7 -0
- data/.gitignore +1 -16
- data/Gemfile +1 -2
- data/LICENSE +17 -18
- data/README.md +98 -89
- data/Rakefile +9 -2
- data/bin/playwhe +99 -74
- data/lib/playwhe.rb +76 -133
- data/lib/playwhe/fetcher.rb +25 -0
- data/lib/playwhe/get.rb +214 -0
- data/lib/playwhe/http.rb +39 -0
- data/lib/playwhe/parser.rb +15 -0
- data/lib/playwhe/result.rb +119 -0
- data/lib/playwhe/settings.rb +15 -0
- data/lib/playwhe/util.rb +11 -0
- data/lib/playwhe/version.rb +1 -1
- data/playwhe.gemspec +32 -24
- data/test/playwhe/fetcher_test.rb +72 -0
- data/test/playwhe/get_test.rb +187 -0
- data/test/playwhe/http/adapter_test.rb +46 -0
- data/test/playwhe/http/response_test.rb +39 -0
- data/test/playwhe/parser_test.rb +34 -0
- data/test/playwhe/result_test.rb +158 -0
- data/test/playwhe/settings_test.rb +13 -0
- data/test/playwhe/util_test.rb +37 -0
- data/test/test_helper.rb +6 -0
- metadata +97 -45
- data/data/playwhe.db +0 -0
- data/lib/playwhe/storage.rb +0 -109
- data/lib/playwhe/storage/models.rb +0 -92
data/data/playwhe.db
DELETED
Binary file
|
data/lib/playwhe/storage.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
require 'data_mapper'
|
2
|
-
require 'date'
|
3
|
-
|
4
|
-
require 'playwhe/storage/models'
|
5
|
-
|
6
|
-
module PlayWhe
|
7
|
-
|
8
|
-
module Storage
|
9
|
-
|
10
|
-
def self.connect(path_to_db, log_level = :debug)
|
11
|
-
DataMapper::Logger.new($stdout, log_level)
|
12
|
-
DataMapper.setup(:default, "sqlite://#{File.expand_path(path_to_db)}")
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.create(path = nil, log_level = :debug)
|
16
|
-
setup(path, log_level)
|
17
|
-
|
18
|
-
DataMapper.auto_migrate!
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.update(path = nil, log_level = :debug)
|
22
|
-
setup(path, log_level)
|
23
|
-
|
24
|
-
(PlayWhe::BIRTHDAY.year..Date.today.year).each do |year|
|
25
|
-
task = Task.first_or_create({ year: year },
|
26
|
-
{ month: year == PlayWhe::BIRTHDAY.year ? PlayWhe::BIRTHDAY.month : 1,
|
27
|
-
status: 'pending' })
|
28
|
-
|
29
|
-
unless task.completed?
|
30
|
-
DataMapper.logger << "retrieving results for year #{year}..."
|
31
|
-
|
32
|
-
before = Proc.new do |month|
|
33
|
-
if month < task.month
|
34
|
-
DataMapper.logger << " - skipping #{Date::MONTHNAMES[month]}"
|
35
|
-
true # skip
|
36
|
-
else
|
37
|
-
DataMapper.logger << " + at #{Date::MONTHNAMES[month]}..."
|
38
|
-
false # do not skip
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
after = Proc.new do |month, flag, results|
|
43
|
-
case flag
|
44
|
-
when :ok
|
45
|
-
Result.transaction do |t|
|
46
|
-
begin
|
47
|
-
results.each do |r|
|
48
|
-
result = Result.first_or_new(draw: r[:draw], date: r[:date], period: r[:period], mark: r[:mark])
|
49
|
-
|
50
|
-
unless result.save
|
51
|
-
DataMapper.logger << " - invalid data: #{result.draw} #{result.date} #{result.period} #{result.mark}"
|
52
|
-
Error.create(message: r.to_s)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
today = Date.today
|
57
|
-
if Date.new(year, month) < Date.new(today.year, today.month)
|
58
|
-
if month == 12
|
59
|
-
task.status = 'completed'
|
60
|
-
else
|
61
|
-
task.month += 1
|
62
|
-
end
|
63
|
-
|
64
|
-
if task.save
|
65
|
-
DataMapper.logger << " + completed #{Date::MONTHNAMES[month]}!"
|
66
|
-
DataMapper.logger << "completed year #{year}!" if task.completed?
|
67
|
-
|
68
|
-
true # continue
|
69
|
-
else
|
70
|
-
DataMapper.logger << ' - task not completed!'
|
71
|
-
|
72
|
-
false # do not continue
|
73
|
-
end
|
74
|
-
else
|
75
|
-
DataMapper.logger << 'All tasks completed!'
|
76
|
-
|
77
|
-
false # do not continue
|
78
|
-
end
|
79
|
-
rescue
|
80
|
-
t.rollback
|
81
|
-
|
82
|
-
DataMapper.logger << 'Encountered an error during processing'
|
83
|
-
|
84
|
-
false # do not continue
|
85
|
-
end
|
86
|
-
end
|
87
|
-
when :error
|
88
|
-
DataMapper.logger << 'Encountered an error during processing'
|
89
|
-
|
90
|
-
false # do not continue
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
PlayWhe.results_for_year(year, before: before, after: after)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
private
|
100
|
-
|
101
|
-
def self.setup(path, log_level)
|
102
|
-
path ||= File.join(Dir.home, '.playwhe')
|
103
|
-
path = File.expand_path(path)
|
104
|
-
Dir.mkdir(path) unless File.directory?(path)
|
105
|
-
|
106
|
-
self.connect("#{path}/playwhe.db", log_level)
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
require 'data_mapper'
|
2
|
-
|
3
|
-
module PlayWhe
|
4
|
-
|
5
|
-
module Storage
|
6
|
-
|
7
|
-
DataMapper::Property.required(true)
|
8
|
-
|
9
|
-
class Result
|
10
|
-
include DataMapper::Resource
|
11
|
-
|
12
|
-
storage_names[:default] = 'results'
|
13
|
-
|
14
|
-
property :draw, Integer, key: true
|
15
|
-
property :date, Date
|
16
|
-
property :period, Integer
|
17
|
-
property :mark, Integer
|
18
|
-
|
19
|
-
validates_with_method :draw, method: :check_draw
|
20
|
-
validates_within :period, set: 1..3
|
21
|
-
validates_within :mark, set: PlayWhe::LOWEST_MARK..PlayWhe::HIGHEST_MARK
|
22
|
-
|
23
|
-
def self.all_by_day(year, month, day)
|
24
|
-
self.all(:date => Date.new(year, month, day))
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.all_by_month(year, month)
|
28
|
-
a = Date.new year, month, 1 # start of the month
|
29
|
-
b = (a >> 1) - 1 # end of the month
|
30
|
-
|
31
|
-
self.all(:date => a..b)
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.all_by_year(year)
|
35
|
-
a = Date.new year, 1, 1 # start of the year
|
36
|
-
b = (a >> 12) - 1 # end of the year
|
37
|
-
|
38
|
-
self.all(:date => a..b)
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def check_draw
|
44
|
-
self.draw >= 1 ? true : [false, 'The draw must be a positive integer']
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
class Task
|
49
|
-
include DataMapper::Resource
|
50
|
-
|
51
|
-
storage_names[:default] = 'tasks'
|
52
|
-
|
53
|
-
property :id, Serial
|
54
|
-
property :year, Integer, unique: true
|
55
|
-
property :month, Integer
|
56
|
-
property :status, String
|
57
|
-
property :created_at, DateTime, required: false
|
58
|
-
property :updated_at, DateTime, required: false
|
59
|
-
|
60
|
-
validates_with_method :year, method: :check_year
|
61
|
-
validates_within :month, set: 1..12
|
62
|
-
validates_within :status, set: ['pending', 'completed']
|
63
|
-
|
64
|
-
def completed?
|
65
|
-
self.status == 'completed'
|
66
|
-
end
|
67
|
-
|
68
|
-
private
|
69
|
-
|
70
|
-
def check_year
|
71
|
-
if self.year >= PlayWhe::BIRTHDAY.year && self.year <= Date.today.year
|
72
|
-
true
|
73
|
-
else
|
74
|
-
[false, 'The year is out of range']
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
class Error
|
80
|
-
include DataMapper::Resource
|
81
|
-
|
82
|
-
storage_names[:default] = 'errors'
|
83
|
-
|
84
|
-
property :id, Serial
|
85
|
-
property :message, Text
|
86
|
-
property :created_at, DateTime, required: false
|
87
|
-
property :updated_at, DateTime, required: false
|
88
|
-
end
|
89
|
-
|
90
|
-
DataMapper.finalize
|
91
|
-
end
|
92
|
-
end
|