Module: DataTools::Conversions

Defined in:
lib/data_tools/conversions.rb

Class Method Summary collapse

Class Method Details

.datestr(value) ⇒ Object



32
33
34
# File 'lib/data_tools/conversions.rb', line 32

def self.datestr(value)
  value.strftime("%m/%d/%Y")
end

.difference_in_days(args) ⇒ Object

def self.difference_in_days(start_ts, end_ts1, end_ts2 = nil)



41
42
43
44
45
# File 'lib/data_tools/conversions.rb', line 41

def self.difference_in_days(args)
  start_ts, end_ts1, end_ts2 = *args
  end_ts = end_ts1 || end_ts2
  end_ts && start_ts && (end_ts.to_date - start_ts.to_date).to_i
end

.first_ou(value) ⇒ Object



20
21
22
# File 'lib/data_tools/conversions.rb', line 20

def self.first_ou(value)
  (ou = value.split(',').select{|s| s =~ /^OU=/}.first) && ou.split('=').last
end

.max_datestr(values) ⇒ Object



36
37
38
# File 'lib/data_tools/conversions.rb', line 36

def self.max_datestr(values)
  (dt = values.compact.max) && dt.strftime("%m/%d/%Y")
end

.msad_active_account(value) ⇒ Object



28
29
30
# File 'lib/data_tools/conversions.rb', line 28

def self.(value)
  value.to_i & 2 == 0
end

.msad_long_timestamp(value) ⇒ Object

MSAD uses INT64 (8 bytes) for lastLogon, lastLogonTimestamp, accountExpires



7
8
9
10
11
12
13
14
# File 'lib/data_tools/conversions.rb', line 7

def self.msad_long_timestamp(value)
  case value.to_i
  when 0, 0x7FFFFFFFFFFFFFFF
    nil
  else
    DateTime.new(1601, 1, 1) + value.to_i/(60.0 * 10000000 * 1440)
  end
end

.noop(value) ⇒ Object



2
3
4
# File 'lib/data_tools/conversions.rb', line 2

def self.noop(value)
  value
end

.readable_timestamp(value) ⇒ Object



16
17
18
# File 'lib/data_tools/conversions.rb', line 16

def self.readable_timestamp(value)
  DateTime.parse(value)
end

.second_ou(value) ⇒ Object



24
25
26
# File 'lib/data_tools/conversions.rb', line 24

def self.second_ou(value)
  (ou = value.split(',').select{|s| s =~ /^OU=/}[1]) && ou.split('=').last
end