Code refactor

This commit is contained in:
Guido Fioravantti
2015-11-05 11:12:10 +01:00
parent af5dc38361
commit 3552f27de7
3 changed files with 43 additions and 19 deletions

View File

@@ -7,12 +7,14 @@ import urllib
from heremaps.heremapsexceptions import BadGeocodingParams
from heremaps.heremapsexceptions import EmptyGeocoderResponse
from heremaps.heremapsexceptions import NoGeocodingParams
from heremaps.heremapsexceptions import MalformedResult
class Geocoder:
'A Here Maps Geocoder wrapper for python'
URL_GEOCODE_JSON = 'http://geocoder.api.here.com/6.2/geocode.json'
DEFAULT_MAXRESULTS = 1
DEFAULT_GEN = 9
ADDRESS_PARAMS = [
'city',
@@ -50,16 +52,17 @@ class Geocoder:
app_code = ''
maxresults = ''
def __init__(self, app_id, app_code, maxresults=DEFAULT_MAXRESULTS):
def __init__(self, app_id, app_code, maxresults=DEFAULT_MAXRESULTS, gen=DEFAULT_GEN):
self.app_id = app_id
self.app_code = app_code
self.maxresults = maxresults
self.gen = gen
def geocode(self, params):
if not set(params.keys()).issubset(set(self.ADDRESS_PARAMS)):
raise BadGeocodingParams(params)
response = self.performRequest(params)
response = self.perform_request(params)
try:
results = response['Response']['View'][0]['Result']
@@ -68,12 +71,12 @@ class Geocoder:
return results
def performRequest(self, params):
def perform_request(self, params):
request_params = {
'app_id' : self.app_id,
'app_code' : self.app_code,
'maxresults' : self.maxresults,
'gen' : '9'
'gen' : self.gen
}
request_params.update(params)
@@ -86,7 +89,7 @@ class Geocoder:
return response
def geocodeAddress(self, **kwargs):
def geocode_address(self, **kwargs):
params = {}
for key, value in kwargs.iteritems():
if value: params[key] = value
@@ -95,8 +98,11 @@ class Geocoder:
return self.geocode(params)
def extractLngLatFromResult(self, result):
location = result['Location']
def extract_lng_lat_from_result(self, result):
try:
location = result['Location']
except KeyError:
raise MalformedResult()
longitude = location['DisplayPosition']['Longitude']
latitude = location['DisplayPosition']['Latitude']