Class: DiscoverySiteTarget

Inherits:
Domain::Model show all
Defined in:
lib/domain/site_target/model.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Domain::Model

columns, from_csv, from_json, headers, #to_csv, #to_hash, #to_s, view

Constructor Details

#initialize(attributes = {}) ⇒ DiscoverySiteTarget

Returns a new instance of DiscoverySiteTarget.



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/domain/site_target/model.rb', line 38

def initialize(attributes = {})
  start_ip = attributes[:start_ip]
  end_ip = attributes[:end_ip]
  start_ip, end_ip = extract_ip_addresses(attributes[:subnet]) if start_ip.nil? || end_ip.nil?

  updated_attributes = attributes.merge(
    start_ip:,
    end_ip:
  )
  super(updated_attributes)
end

Instance Attribute Details

#end_ipObject

Returns the value of attribute end_ip.



33
34
35
# File 'lib/domain/site_target/model.rb', line 33

def end_ip
  @end_ip
end

#site_idObject

Returns the value of attribute site_id.



33
34
35
# File 'lib/domain/site_target/model.rb', line 33

def site_id
  @site_id
end

#start_ipObject

Returns the value of attribute start_ip.



33
34
35
# File 'lib/domain/site_target/model.rb', line 33

def start_ip
  @start_ip
end

#subnetObject

Returns the value of attribute subnet.



33
34
35
# File 'lib/domain/site_target/model.rb', line 33

def subnet
  @subnet
end

Class Method Details

.primary_keyObject



50
51
52
# File 'lib/domain/site_target/model.rb', line 50

def self.primary_key
  %w[site_id subnet]
end

.table_nameObject



54
55
56
# File 'lib/domain/site_target/model.rb', line 54

def self.table_name
  'country_discovery_site_target'
end

Instance Method Details

#extract_ip_addresses(range) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/domain/site_target/model.rb', line 58

def extract_ip_addresses(range)
  if range.nil?
    raise ArgumentError,
          "Target cannot be nil. Please provide a valid IP address or range in the format 'start_ip - end_ip'."
  end

  min_ip = max_ip = range
  min_ip, max_ip = range.split(' - ') if range.include?(' - ')
  [IPAddr.new(min_ip), IPAddr.new(max_ip)]
rescue IPAddr::InvalidAddressError => e
  raise ArgumentError, "Invalid IP address format found in #{range}: #{e.message}"
end