Class: SmartyStreets::InternationalPostalCode::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/smartystreets_ruby_sdk/international_postal_code/client.rb

Overview

It is recommended to instantiate this class using ClientBuilder.build_international_postal_code_api_client

Instance Method Summary collapse

Constructor Details

#initialize(sender, serializer) ⇒ Client

Returns a new instance of Client.



9
10
11
12
# File 'lib/smartystreets_ruby_sdk/international_postal_code/client.rb', line 9

def initialize(sender, serializer)
  @sender = sender
  @serializer = serializer
end

Instance Method Details

#add_parameter(request, key, value) ⇒ Object



53
54
55
# File 'lib/smartystreets_ruby_sdk/international_postal_code/client.rb', line 53

def add_parameter(request, key, value)
  request.parameters[key] = value unless value.nil? or value.empty?
end

#build_request(lookup) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/smartystreets_ruby_sdk/international_postal_code/client.rb', line 30

def build_request(lookup)
  request = SmartyStreets::Request.new

  add_parameter(request, 'input_id', lookup.input_id)
  add_parameter(request, 'country', lookup.country)
  add_parameter(request, 'locality', lookup.locality)
  add_parameter(request, 'administrative_area', lookup.administrative_area)
  add_parameter(request, 'postal_code', lookup.postal_code)

  request
end

#convert_candidates(candidate_hashes) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/smartystreets_ruby_sdk/international_postal_code/client.rb', line 42

def convert_candidates(candidate_hashes)
  converted = []
  return converted if candidate_hashes.nil?

  candidate_hashes.each do |obj|
    converted.push(InternationalPostalCode::Candidate.new(obj))
  end

  converted
end

#send_lookup(lookup) ⇒ Object

Sends a Lookup object to the International Postal Code API and stores the result in the Lookup’s results field.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/smartystreets_ruby_sdk/international_postal_code/client.rb', line 15

def send_lookup(lookup)
  raise SmartyStreets::SmartyError, 'Send() must be passed a Lookup.' if lookup.nil?

  request = build_request(lookup)

  response = @sender.send(request)

  raise response.error if response.error

  candidate_hashes = @serializer.deserialize(response.payload) || []
  candidates = convert_candidates(candidate_hashes)
  lookup.results = candidates
  candidates
end