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.

Raises:



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