Module: Ipligence::Utils

Defined in:
lib/ipligence/utils.rb

Class Method Summary collapse

Class Method Details

.convert_dotted_to_long(ip) ⇒ Object



2
3
4
5
# File 'lib/ipligence/utils.rb', line 2

def self.convert_dotted_to_long(ip)
  dotted_ip_array = ip.split(".").map(&:to_i)
  (dotted_ip_array[0] * 256 * 256 * 256) + (dotted_ip_array[1] * 256 * 256) + (dotted_ip_array[2] * 256) + (dotted_ip_array[3])
end

.log(message) ⇒ Object



41
42
43
# File 'lib/ipligence/utils.rb', line 41

def self.log(message)
  Kernel.puts "Ipligence [#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] #{message}"
end

.repopulate_db(file_path) ⇒ Object



7
8
9
10
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
# File 'lib/ipligence/utils.rb', line 7

def self.repopulate_db(file_path)
  index = 0
  total_lines = File.open(file_path).readlines.size

  Ipligence::Record.destroy_all

  CSV.foreach(file_path) do |row|
    Ipligence::Utils.log "Populating line [#{index + 1}/#{total_lines}]: #{row}"
    Ipligence::Record.create!(
      :ipblock_from => row[0],
      :ipblock_to   => row[1],
      :country_code => row[2].empty? ? nil : row[2],
      :country_name => row[3].empty? ? nil : row[3],
      :continent_code => row[4].empty? ? nil : row[4],
      :continent_name => row[5].empty? ? nil : row[5],
      :time_zone => row[6].empty? ? nil : row[6],
      :region_code => row[7].empty? ? nil : row[7],
      :region_name => row[8].empty? ? nil : row[8],
      :owner => row[9].empty? ? nil : row[9],
      :city_name => row[10].empty? ? nil : row[10],
      :county_name => row[11].empty? ? nil : row[11],
      :post_code => row[12].empty? ? nil : row[12],
      :area_code => row[13].empty? ? nil : row[13],
      :metro_code => row[14].empty? ? nil : row[14],
      :latitude => row[15].empty? ? nil : row[15],
      :longitude => row[16].empty? ? nil : row[16]
    )

    index += 1
  end

  Ipligence::Utils.log "Repopulation completed!"
end