Skip to content
Snippets Groups Projects
Commit 54372401 authored by Christian Aust's avatar Christian Aust
Browse files

Added test case for Ovi, restored Ruby 1.8 hash syntax

parent 95caf8cf
No related branches found
No related tags found
No related merge requests found
# ovi.com store
require 'geocoder/lookups/base'
require "geocoder/results/ovi"
require 'geocoder/results/ovi'
module Geocoder::Lookup
class Ovi < Base
......@@ -10,19 +10,35 @@ module Geocoder::Lookup
def results(query)
return [] unless doc = fetch_data(query)
return [] unless doc['Response']
doc['Response']['View'].first['Result']
return [] unless doc['Response'] && doc['Response']['View']
if r=doc['Response']['View']
return [] if r.nil? || !r.is_a?(Array) || r.empty?
return r.first['Result']
end
[]
end
def query_url_params(query)
super.merge(
searchtext:query.sanitized_text,
gen:1,
app_id:Geocoder::Configuration.api_key[0],
app_code:Geocoder::Configuration.api_key[1]
:searchtext=>query.sanitized_text,
:gen=>1,
:app_id=>api_key,
:app_code=>api_code
)
end
def api_key
if a=Geocoder::Configuration.api_key
return a.first if a.is_a?(Array)
end
end
def api_code
if a=Geocoder::Configuration.api_key
return a.last if a.is_a?(Array)
end
end
def query_url(query)
"http://lbs.ovi.com/search/6.2/geocode.json?" + url_query_string(query)
end
......
......@@ -21,7 +21,7 @@ module Geocoder::Result
def state
fail unless d = @data['Location']['Address']
d['State']
d['County']
end
def province
......@@ -29,17 +29,31 @@ module Geocoder::Result
d['County']
end
def postal_code
fail unless d = @data['Location']['Address']
d['PostalCode']
end
def city
fail unless d = @data['Location']['Address']
d['City']
end
def state_code
fail
fail unless d = @data['Location']['Address']
d['State']
end
def province_code
fail
fail unless d = @data['Location']['Address']
d['State']
end
def country
fail unless d = @data['Location']['Address']['AdditionalData']
d.find{|ad| ad['value'] if ad['key']=='CountryName'}
if v = d.find{|ad| ad['key']=='CountryName'}
return v['value']
end
end
def country_code
......
{
"Response": {
"MetaInfo": {
"Timestamp": "2013-02-08T16:26:39.382+0000"
},
"View": [
{
"_type": "SearchResultsViewType",
"ViewId": 0,
"Result": [
{
"Relevance": 1.0,
"MatchLevel": "houseNumber",
"MatchQuality": {
"State": 1.0,
"City": 1.0,
"Street": [
1.0
],
"HouseNumber": 1.0
},
"MatchType": "pointAddress",
"Location": {
"LocationId": "NT_ArsGdYbpo6dqjPQel9gTID_4",
"LocationType": "point",
"DisplayPosition": {
"Latitude": 40.7504692,
"Longitude": -73.9933777
},
"NavigationPosition": [
{
"Latitude": 40.7500305,
"Longitude": -73.9942398
}
],
"MapView": {
"TopLeft": {
"Latitude": 40.7515934,
"Longitude": -73.9948616
},
"BottomRight": {
"Latitude": 40.7493451,
"Longitude": -73.9918938
}
},
"Address": {
"Label": "4 Penn Plz, New York, NY 10001, United States",
"Country": "USA",
"State": "NY",
"County": "New York",
"City": "New York",
"Street": "Penn Plz",
"HouseNumber": "4",
"PostalCode": "10001",
"AdditionalData": [
{
"value": "United States",
"key": "CountryName"
},
{
"value": "New York",
"key": "StateName"
}
]
}
}
}
]
}
]
}
}
{
"Response": {
"MetaInfo": {
"Timestamp": "2013-02-08T16:41:16.723+0000"
},
"View": []
}
}
......@@ -163,6 +163,19 @@ module Geocoder
end
end
class Ovi < Base
private #-----------------------------------------------------------------
def fetch_raw_data(query)
raise TimeoutError if query.text == "timeout"
raise SocketError if query.text == "socket_error"
file = case query.text
when "no results"; :no_results
else :madison_square_garden
end
read_fixture "ovi_#{file}.json"
end
end
class Nominatim < Base
private #-----------------------------------------------------------------
def fetch_raw_data(query)
......
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