reverse-geocoding 0.2.4.0 → 0.3.0.0
raw patch · 3 files changed
+24/−9 lines, 3 filesdep ~aesonPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: aeson
API changes (from Hackage documentation)
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.City
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Latitude
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Longitude
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Postcode
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Street
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.FromJSON Data.Geolocation.Reverse.Types.Suburb
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.FromJSON Data.ISO3166_CountryCodes.CountryCode
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.City
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Latitude
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Longitude
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Postcode
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Street
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.ToJSON Data.Geolocation.Reverse.Types.Suburb
- Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.Class.ToJSON Data.ISO3166_CountryCodes.CountryCode
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.FromJSON.FromJSON Data.Geolocation.Reverse.Types.City
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.FromJSON.FromJSON Data.Geolocation.Reverse.Types.Latitude
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.FromJSON.FromJSON Data.Geolocation.Reverse.Types.Longitude
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.FromJSON.FromJSON Data.Geolocation.Reverse.Types.Postcode
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.FromJSON.FromJSON Data.Geolocation.Reverse.Types.Street
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.FromJSON.FromJSON Data.Geolocation.Reverse.Types.Suburb
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.FromJSON.FromJSON Data.ISO3166_CountryCodes.CountryCode
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.ToJSON.ToJSON Data.Geolocation.Reverse.Types.City
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.ToJSON.ToJSON Data.Geolocation.Reverse.Types.Latitude
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.ToJSON.ToJSON Data.Geolocation.Reverse.Types.Longitude
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.ToJSON.ToJSON Data.Geolocation.Reverse.Types.Postcode
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.ToJSON.ToJSON Data.Geolocation.Reverse.Types.Street
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.ToJSON.ToJSON Data.Geolocation.Reverse.Types.Suburb
+ Data.Geolocation.Reverse.Types: instance Data.Aeson.Types.ToJSON.ToJSON Data.ISO3166_CountryCodes.CountryCode
- Data.Geolocation.Reverse.Providers: type ReverseGeoProvider = (ReverseGeoJsonKey, ReverseGeoUrl, ReverseGeoParser)
+ Data.Geolocation.Reverse.Providers: type ReverseGeoProvider = (ReverseGeoJsonKey, ReverseGeoUrl, ReverseGeoParser, Maybe Options)
Files
- reverse-geocoding.cabal +2/−2
- src/Data/Geolocation/Reverse.hs +3/−3
- src/Data/Geolocation/Reverse/Providers.hs +19/−4
reverse-geocoding.cabal view
@@ -1,5 +1,5 @@ name: reverse-geocoding-version: 0.2.4.0+version: 0.3.0.0 synopsis: Simple reverse geocoding using OpenStreeMap description: Simple reverse geocoding using OpenStreeMap homepage: https://github.com/jcristovao/reverse-geocoding@@ -22,7 +22,7 @@ , lens >= 4.4 && < 4.16 , lens-aeson >= 1.0.0.5 && < 1.2 , wreq >= 0.4 && < 0.5- , aeson >= 0.10 && < 0.12+ , aeson >= 0.10 && < 1.2 , text >= 1.2 && < 1.3 , iso3166-country-codes >= 0.20140203.7 hs-source-dirs: src
src/Data/Geolocation/Reverse.hs view
@@ -18,7 +18,7 @@ module Data.Geolocation.Reverse where import Control.Lens-import Network.Wreq+import Network.Wreq (getWith, responseBody) import Data.Aeson import Data.Aeson.Types import Data.Aeson.Lens (key)@@ -36,11 +36,11 @@ -> Longitude -> ReverseGeoProvider -> IO (Maybe ParsedLocationInfo)-getLocationInfo lat lon (jsonkey,url,parser) =+getLocationInfo lat lon (jsonkey,url,parser,Just options) = case url lat lon of Nothing -> return Nothing Just ga -> do- r <- get ga+ r <- getWith options ga -- addr :: Maybe Value let addr = r ^? responseBody . key jsonkey case addr of
src/Data/Geolocation/Reverse/Providers.hs view
@@ -16,11 +16,13 @@ import Control.Applicative import Data.Char+import Control.Lens ((.~),(&)) import Data.Monoid import Data.Maybe import Data.Aeson-import Data.Aeson.Types+import Data.Aeson.Types hiding (Options) import Control.Monad (join)+import Network.Wreq (Options, defaults, header) import qualified Data.Text as T import Data.Geolocation.Reverse.Types@@ -28,11 +30,24 @@ type ReverseGeoJsonKey = T.Text type ReverseGeoUrl = Latitude -> Longitude -> Maybe String type ReverseGeoParser = Object -> Parser ParsedLocationInfo-type ReverseGeoProvider = (ReverseGeoJsonKey, ReverseGeoUrl, ReverseGeoParser)-+type ReverseGeoProvider =+ ( ReverseGeoJsonKey+ , ReverseGeoUrl+ , ReverseGeoParser+ , Maybe Options+ ) openStreetMap :: ReverseGeoProvider-openStreetMap = ("address", openStreetMapUrl, openStreetMapParser)+openStreetMap =+ ( "address"+ , openStreetMapUrl+ , openStreetMapParser+ , Just+ ( defaults+ & header "User-Agent"+ .~ ["Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"]+ )+ ) openStreetMapUrl :: Latitude -> Longitude -> Maybe String openStreetMapUrl (Latitude mlat) (Longitude mlon) = do