{-# LANGUAGE TemplateHaskell #-} -- | module Strive.Types.Polylines ( Polyline (..), PolylineDetailed (..), PolylineSummary (..), ) where import Data.Aeson (FromJSON, parseJSON) import Data.Aeson.TH (deriveFromJSON) import Data.Text (Text) import GPolyline (decodeline) import Strive.Enums (ResourceState) import Strive.Internal.TH (options) -- | newtype Polyline = Polyline {unPolyline :: [(Double, Double)]} deriving (Show) instance FromJSON Polyline where parseJSON = fmap (Polyline . decodeline) . parseJSON -- | data PolylineDetailed = PolylineDetailed { polylineDetailed_id :: Text, polylineDetailed_polyline :: Polyline, polylineDetailed_resourceState :: ResourceState, polylineDetailed_summaryPolyline :: Maybe Polyline } deriving (Show) $(deriveFromJSON options ''PolylineDetailed) -- | data PolylineSummary = PolylineSummary { polylineSummary_id :: Text, polylineSummary_resourceState :: ResourceState, polylineSummary_summaryPolyline :: Maybe Polyline } deriving (Show) $(deriveFromJSON options ''PolylineSummary)