Class: BerkeleyLibrary::TIND::API::DateRange

Inherits:
Object
  • Object
show all
Defined in:
lib/berkeley_library/tind/api/date_range.rb

Constant Summary collapse

FORMAT =
'%Y-%m-%d %H:%M:%S'.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(from_time:, until_time:, mtime: false) ⇒ DateRange

Returns a new instance of DateRange.



12
13
14
15
# File 'lib/berkeley_library/tind/api/date_range.rb', line 12

def initialize(from_time:, until_time:, mtime: false)
  @from_time, @until_time = DateRange.ensure_valid_range(from_time, until_time)
  @mtime = mtime
end

Instance Attribute Details

#from_timeObject (readonly)

Returns the value of attribute from_time.



10
11
12
# File 'lib/berkeley_library/tind/api/date_range.rb', line 10

def from_time
  @from_time
end

#until_timeObject (readonly)

Returns the value of attribute until_time.



10
11
12
# File 'lib/berkeley_library/tind/api/date_range.rb', line 10

def until_time
  @until_time
end

Class Method Details

.ensure_date_range(date_range) ⇒ Object

Raises:

  • (ArgumentError)


40
41
42
43
44
45
46
# File 'lib/berkeley_library/tind/api/date_range.rb', line 40

def ensure_date_range(date_range)
  return unless date_range
  return date_range if date_range.is_a?(DateRange)
  return DateRange.from_range(date_range) if date_range.respond_to?(:first) && date_range.respond_to?(:last)

  raise ArgumentError, "Can't convert #{date_range.inspect} to #{DateRange}"
end

.ensure_valid_range(from_time, until_time) ⇒ Object

Raises:

  • (ArgumentError)


48
49
50
51
52
53
# File 'lib/berkeley_library/tind/api/date_range.rb', line 48

def ensure_valid_range(from_time, until_time)
  ftime, utime = [from_time, until_time].map { |t| BerkeleyLibrary::Util::Times.ensure_utc(t) }
  return [ftime, utime] if ftime <= utime

  raise ArgumentError, "Not a valid range: #{from_time.inspect}..#{until_time.inspect}"
end

.from_range(range) ⇒ Object



36
37
38
# File 'lib/berkeley_library/tind/api/date_range.rb', line 36

def from_range(range)
  DateRange.new(from_time: range.first, until_time: range.last)
end

Instance Method Details

#==(other) ⇒ Object



29
30
31
32
33
# File 'lib/berkeley_library/tind/api/date_range.rb', line 29

def ==(other)
  return false unless other.class == self.class

  [from_time, until_time] == [other.from_time, other.until_time]
end

#eqlObject



27
# File 'lib/berkeley_library/tind/api/date_range.rb', line 27

alias eql ==

#mtime?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/berkeley_library/tind/api/date_range.rb', line 17

def mtime?
  @mtime
end

#to_paramsObject



21
22
23
24
25
# File 'lib/berkeley_library/tind/api/date_range.rb', line 21

def to_params
  { d1: format_param(from_time), d2: format_param(until_time) }.tap do |params|
    params[:dt] = 'm' if mtime?
  end
end