Class: AddressSimilarityParameters

Inherits:
Object
  • Object
show all
Defined in:
lib/address_similarity_parameters.rb

Overview

This class encapsulates parameters that are needed for address-similarity in Analytics API.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(address1, address2, address_parameters = nil) ⇒ AddressSimilarityParameters

:notnew:



17
18
19
20
21
# File 'lib/address_similarity_parameters.rb', line 17

def initialize(address1, address2, address_parameters = nil) # :notnew:
  @address1 = address1
  @address2 = address2
  @parameters = address_parameters
end

Instance Attribute Details

#address1Object

Address to be compared to address2



10
11
12
# File 'lib/address_similarity_parameters.rb', line 10

def address1
  @address1
end

#address2Object

Address to be compared to address1



12
13
14
# File 'lib/address_similarity_parameters.rb', line 12

def address2
  @address2
end

#parametersObject

Parameters map sent to the API (optional, should be a hash)



15
16
17
# File 'lib/address_similarity_parameters.rb', line 15

def parameters
  @parameters
end

Instance Method Details

#load_paramsObject

Converts this class to Hash with its keys in lower CamelCase.

Returns the new Hash.



39
40
41
42
43
44
# File 'lib/address_similarity_parameters.rb', line 39

def load_params
  validate_params
  to_hash
    .compact
    .transform_keys { |key| key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase) }
end

#to_hashObject

Converts this class to Hash.

Returns the new Hash.



49
50
51
52
53
54
55
# File 'lib/address_similarity_parameters.rb', line 49

def to_hash
  {
    address1: @address1.is_a?(AddressParameter) ? @address1.load_param : @address1,
    address2: @address2.is_a?(AddressParameter) ? @address2.load_param : @address2,
    parameters: @parameters
  }
end

#validate_paramsObject

Validates the parameters by checking if address1 and address2 are instances of AddressParameters or Strings.

Raises:



25
26
27
28
29
30
31
32
33
34
# File 'lib/address_similarity_parameters.rb', line 25

def validate_params
  a1_msg = 'address1 option can only be an instance of an AddressParameter or a String'
  raise BadRequestError.new(a1_msg) if [String, AddressParameter].none? { |clazz| @address1.is_a? clazz }

  a2_msg = 'address2 option can only be an instance of an AddressParameter or a String'
  raise BadRequestError.new(a2_msg) if [String, AddressParameter].none? { |clazz| @address2.is_a? clazz }

  opt_msg = 'parameters can only be an instance of a Hash'
  raise BadRequestError.new(opt_msg) if @parameters && !(@parameters.is_a? Hash)
end