11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'app/services/marty/cleaner/maintenance_window.rb', line 11
def call
window = ::Marty::Config.fetch(CONFIG_KEY)
raise "'#{CONFIG_KEY}' is not a hash'" unless window.is_a?(Hash)
day, range = HASH_KEYS.map do |k|
raise "'#{k}' is missing from '#{CONFIG_KEY}'" unless window.key?(k)
window[k] || 'Marty::Cleaner::MaintenanceWindow'\
"::DEFAULT_#{k.upcase}".constantize
end
raise '\'day\' must be a String' unless day.is_a?(String)
pday = day.downcase
raise '\'day\' must be a valid day of the week' unless
DAYNAMES.member?(pday)
unless Time.zone.now.send("#{pday}?")
raise "#{name.demodulize} can only be called on "\
"#{pday.capitalize}"
end
raise '\'range\' must be an array of length 2' unless
range.is_a?(Array) && range.size == 2
prange = range.map { |r| Time.zone.parse(r) }
raise 'invalid range specified' unless prange.all?
raise "Current time not within maintenance window: #{prange}" unless
Time.zone.now.between?(prange.first, prange.second)
window.merge('range' => prange, 'day' => pday)
end
|