packages feed

dresdner-verkehrsbetriebe 0.1.0 → 0.1.1

raw patch · 2 files changed

+101/−1 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Network.Transportation.Germany.DVB.Route.JSON: Leg :: LegMode -> [Stop] -> Leg
- Network.Transportation.Germany.DVB.Route.JSON: LegMode :: String -> String -> LegMode
- Network.Transportation.Germany.DVB.Route.JSON: Route :: [Trip] -> Route
- Network.Transportation.Germany.DVB.Route.JSON: Stop :: String -> String -> StopRef -> Stop
- Network.Transportation.Germany.DVB.Route.JSON: StopRef :: Maybe String -> Maybe String -> Maybe String -> Maybe String -> StopRef
- Network.Transportation.Germany.DVB.Route.JSON: Trip :: String -> [Leg] -> Trip
- Network.Transportation.Germany.DVB.Route.JSON: data Leg
- Network.Transportation.Germany.DVB.Route.JSON: data LegMode
- Network.Transportation.Germany.DVB.Route.JSON: data Route
- Network.Transportation.Germany.DVB.Route.JSON: data Stop
- Network.Transportation.Germany.DVB.Route.JSON: data StopRef
- Network.Transportation.Germany.DVB.Route.JSON: data Trip
- Network.Transportation.Germany.DVB.Route.JSON: instance FromJSON Leg
- Network.Transportation.Germany.DVB.Route.JSON: instance FromJSON LegMode
- Network.Transportation.Germany.DVB.Route.JSON: instance FromJSON Route
- Network.Transportation.Germany.DVB.Route.JSON: instance FromJSON Stop
- Network.Transportation.Germany.DVB.Route.JSON: instance FromJSON StopRef
- Network.Transportation.Germany.DVB.Route.JSON: instance FromJSON Trip
- Network.Transportation.Germany.DVB.Route.JSON: legMode :: Leg -> LegMode
- Network.Transportation.Germany.DVB.Route.JSON: legModeDesc :: LegMode -> String
- Network.Transportation.Germany.DVB.Route.JSON: legModeNumber :: LegMode -> String
- Network.Transportation.Germany.DVB.Route.JSON: legStops :: Leg -> [Stop]
- Network.Transportation.Germany.DVB.Route.JSON: routeTrips :: Route -> [Trip]
- Network.Transportation.Germany.DVB.Route.JSON: stopName :: Stop -> String
- Network.Transportation.Germany.DVB.Route.JSON: stopPlatformName :: Stop -> String
- Network.Transportation.Germany.DVB.Route.JSON: stopRef :: Stop -> StopRef
- Network.Transportation.Germany.DVB.Route.JSON: stopRefArrivalDelayMins :: StopRef -> Maybe String
- Network.Transportation.Germany.DVB.Route.JSON: stopRefArrivalTime :: StopRef -> Maybe String
- Network.Transportation.Germany.DVB.Route.JSON: stopRefDepartureDelayMins :: StopRef -> Maybe String
- Network.Transportation.Germany.DVB.Route.JSON: stopRefDepartureTime :: StopRef -> Maybe String
- Network.Transportation.Germany.DVB.Route.JSON: tripDuration :: Trip -> String
- Network.Transportation.Germany.DVB.Route.JSON: tripLegs :: Trip -> [Leg]

Files

dresdner-verkehrsbetriebe.cabal view
@@ -1,5 +1,5 @@ name: dresdner-verkehrsbetriebe-version: 0.1.0+version: 0.1.1 synopsis: Library and program for querying DVB (Dresdner Verkehrsbetriebe AG) license: MIT license-file: LICENSE@@ -13,6 +13,8 @@   exposed-modules:       Network.Transportation.Germany.DVB     , Network.Transportation.Germany.DVB.Route+  other-modules:+      Network.Transportation.Germany.DVB.Route.JSON   build-depends:       base >= 4.7 && < 4.8     , HTTP >= 4000.2 && < 4000.3
+ src/Network/Transportation/Germany/DVB/Route/JSON.hs view
@@ -0,0 +1,98 @@+-- |+-- Module: Network.Transportation.Germany.DVB.Route.JSON+-- Copyright: (C) 2015 Braden Walters+-- License: MIT (see LICENSE file)+-- Maintainer: Braden Walters <vc@braden-walters.info>+-- Stability: experimental+-- Portability: ghc++{-# LANGUAGE OverloadedStrings #-}++module Network.Transportation.Germany.DVB.Route.JSON+( Route(..)+, Trip(..)+, Leg(..)+, LegMode(..)+, Stop(..)+, StopRef(..)+) where++import Control.Applicative+import Control.Monad+import Data.Aeson+import qualified Data.Foldable as F+import qualified Data.HashMap.Strict as HMS++-- |Parsing JSON type for routes.+data Route = Route { routeTrips :: [Trip] }++instance FromJSON Route where+  parseJSON (Object obj) = Route <$>+                           obj .: "trips"+  parseJSON _ = mzero++-- |Parsing JSON type for trips.+data Trip = Trip+  { tripDuration :: String+  , tripLegs :: [Leg]+  }++instance FromJSON Trip where+  parseJSON (Object obj) = Trip <$>+                           obj .: "duration" <*>+                           obj .: "legs"+  parseJSON _ = mzero++-- |Parsing JSON type for trip legs.+data Leg = Leg+  { legMode :: LegMode+  , legStops :: [Stop]+  }++instance FromJSON Leg where+  parseJSON (Object obj) = Leg <$>+                           maybe mzero parseJSON (HMS.lookup "mode" obj) <*>+                           (F.concat <$> (obj .:? "stopSeq"))+  parseJSON _ = mzero++-- |Parsing JSON type for the mode object in trip legs.+data LegMode = LegMode+  { legModeNumber :: String+  , legModeDesc :: String+  }++instance FromJSON LegMode where+  parseJSON (Object obj) = LegMode <$>+                           obj .: "number" <*>+                           obj .: "desc"+  parseJSON _ = mzero++-- |Parsing JSON type for stops in trips.+data Stop = Stop+  { stopName :: String+  , stopPlatformName :: String+  , stopRef :: StopRef+  }++instance FromJSON Stop where+  parseJSON (Object obj) = Stop <$>+                           obj .: "nameWO" <*>+                           obj .: "platformName" <*>+                           maybe mzero parseJSON (HMS.lookup "ref" obj)+  parseJSON _ = mzero++-- |Parsing JSON type for the ref object in stops in trips.+data StopRef = StopRef+  { stopRefArrivalTime :: Maybe String+  , stopRefArrivalDelayMins :: Maybe String+  , stopRefDepartureTime :: Maybe String+  , stopRefDepartureDelayMins :: Maybe String+  }++instance FromJSON StopRef where+  parseJSON (Object obj) = StopRef <$>+                           obj .:? "arrDateTime" <*>+                           obj .:? "arrDelay" <*>+                           obj .:? "depDateTime" <*>+                           obj .:? "depDelay"+  parseJSON _ = mzero