def time_filter open_or_closed, options
early_2010 = Time.parse('2010-01-01').to_i
[%w(start started), %w(close closed)].each do |mode, suffixed|
after = options.delete("#{suffixed}_after""#{suffixed}_after")
before = options.delete("#{suffixed}_before""#{suffixed}_before")
next unless after or before
time_filter = {}
time_filter[:oldest_date] = to_timestamp(after || early_2010)
time_filter[:latest_date] = to_timestamp(before) if before
options["#{mode}_time_filter""#{mode}_time_filter"] = time_filter
end
if options.key?(:start_time_filter) and options.key?(:close_time_filter)
raise 'You may filter by execution start or close time but not both.'
end
if options.key?(:close_time_filter) and open_or_closed == :open
raise 'Unable to filter by closed time for open workflow executions.'
end
unless options[:start_time_filter] or options[:close_time_filter]
options[:start_time_filter] = { :oldest_date => early_2010 }
end
end