class Geocoder::Result::SmartyStreets

def address

def address
  [
    delivery_line_1,
    delivery_line_2,
    last_line
  ].select{ |i| i.to_s != "" }.join(" ")
end

def city

def city
  zipcode_endpoint? ?
    city_states.first['city'] :
    components['city_name']
end

def coordinates

def coordinates
  %w(latitude longitude).map do |i|
    zipcode_endpoint? ? zipcodes.first[i] : metadata[i]
  end
end

def country

def country
  # SmartyStreets returns results for USA only
  "United States"
end

def country_code

def country_code
  # SmartyStreets returns results for USA only
  "US"
end

def fips

def fips
  zipcode_endpoint? ?
    zipcodes.first['county_fips'] :
    metadata['county_fips']
end

def state

def state
  zipcode_endpoint? ?
    city_states.first['state'] :
    components['state_abbreviation']
end

def state_code

def state_code
  zipcode_endpoint? ?
    city_states.first['state_abbreviation'] :
    components['state_abbreviation']
end

def street

def street
  components['street_name']
end

def zip4

def zip4
  components['plus4_code']
end

def zipcode

def zipcode
  zipcode_endpoint? ?
    zipcodes.first['zipcode'] :
    components['zipcode']
end

def zipcode_endpoint?

def zipcode_endpoint?
  zipcodes.any?
end