Skip to content
Snippets Groups Projects
Commit 18c9dd28 authored by Alex Reisner's avatar Alex Reisner
Browse files

Fix Telize result handling.

Use correct fixtures in tests and make required changes so tests pass.
parent dba61b15
No related branches found
No related tags found
No related merge requests found
......@@ -18,24 +18,19 @@ module Geocoder::Lookup
def results(query)
# don't look up a loopback address, just return the stored result
return [reserved_result(query.text)] if query.loopback_ip_address?
# note: Telize returns json with a code attribute of 401 on bad request
doc = fetch_data(query)
(doc && doc['code'] == 401) ? [] : [doc]
if (doc = fetch_data(query)).nil? or doc['code'] == 401 or empty_result?(doc)
[]
else
[doc]
end
end
def empty_result?(doc)
!doc.is_a?(Hash) or doc.keys == ["ip"]
end
def reserved_result(ip)
{
"ip" => ip,
"city" => "",
"region_code" => "",
"region_name" => "",
"metrocode" => "",
"zipcode" => "",
"latitude" => "0",
"longitude" => "0",
"country_name" => "Reserved",
"country_code" => "RD"
}
{"message" => "Input string is not a valid IP address", "code" => 401}
end
end
end
......@@ -13,7 +13,7 @@ module Geocoder::Result
end
def state
@data['region_name']
@data['region']
end
def state_code
......@@ -21,7 +21,7 @@ module Geocoder::Result
end
def country
@data['country_name']
@data['country']
end
def country_code
......@@ -29,11 +29,11 @@ module Geocoder::Result
end
def postal_code
@data['zipcode']
@data['postal_code']
end
def self.response_attributes
%w[metrocode ip]
%w[timezone isp dma_code area_code ip asn continent_code country_code3]
end
response_attributes.each do |a|
......
{
"message": "Input string is not a valid IP address",
"code": 401
}
{"ip":"10.10.10.10"}
{
"message": "Input string is not a valid IP address",
"code": 401
}
{
"city": "Plano",
"region_code": "TX",
"region_name": "Texas",
"metrocode": "623",
"zipcode": "75093",
"longitude": "-96.8134",
"country_name": "United States",
"country_code": "US",
"ip": "74.200.247.59",
"latitude": "33.0347"
}
{"timezone":"America\/Chicago","isp":"Layered Technologies, Inc.","region_code":"TX","country":"United States","dma_code":"0","area_code":"0","region":"Texas","ip":"74.200.247.59","asn":"AS22576","continent_code":"NA","city":"Plano","postal_code":"75093","longitude":-96.8134,"latitude":33.0347,"country_code":"US","country_code3":"USA"}
{
"message": "Input string is not a valid IP address",
"code": 401
}
{"ip":"10.10.10.10"}
......@@ -22,4 +22,9 @@ class TelizeTest < GeocoderTestCase
results = Geocoder.search("10.10.10.10")
assert_equal 0, results.length
end
def test_invalid_address
results = Geocoder.search("555.555.555.555")
assert_equal 0, results.length
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment