{-# 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 { Polyline -> [(Double, Double)]
unPolyline :: [(Double, Double)] } deriving Int -> Polyline -> ShowS
[Polyline] -> ShowS
Polyline -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Polyline] -> ShowS
$cshowList :: [Polyline] -> ShowS
show :: Polyline -> String
$cshow :: Polyline -> String
showsPrec :: Int -> Polyline -> ShowS
$cshowsPrec :: Int -> Polyline -> ShowS
Show
instance FromJSON Polyline where
parseJSON :: Value -> Parser Polyline
parseJSON = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ([(Double, Double)] -> Polyline
Polyline forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [(Double, Double)]
decodeline) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. FromJSON a => Value -> Parser a
parseJSON
data PolylineDetailed = PolylineDetailed
{ PolylineDetailed -> Text
polylineDetailed_id :: Text
, PolylineDetailed -> Polyline
polylineDetailed_polyline :: Polyline
, PolylineDetailed -> ResourceState
polylineDetailed_resourceState :: ResourceState
, PolylineDetailed -> Maybe Polyline
polylineDetailed_summaryPolyline :: Maybe Polyline
}
deriving Int -> PolylineDetailed -> ShowS
[PolylineDetailed] -> ShowS
PolylineDetailed -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PolylineDetailed] -> ShowS
$cshowList :: [PolylineDetailed] -> ShowS
show :: PolylineDetailed -> String
$cshow :: PolylineDetailed -> String
showsPrec :: Int -> PolylineDetailed -> ShowS
$cshowsPrec :: Int -> PolylineDetailed -> ShowS
Show
$(deriveFromJSON options ''PolylineDetailed)
data PolylineSummary = PolylineSummary
{ PolylineSummary -> Text
polylineSummary_id :: Text
, PolylineSummary -> ResourceState
polylineSummary_resourceState :: ResourceState
, PolylineSummary -> Maybe Polyline
polylineSummary_summaryPolyline :: Maybe Polyline
}
deriving Int -> PolylineSummary -> ShowS
[PolylineSummary] -> ShowS
PolylineSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PolylineSummary] -> ShowS
$cshowList :: [PolylineSummary] -> ShowS
show :: PolylineSummary -> String
$cshow :: PolylineSummary -> String
showsPrec :: Int -> PolylineSummary -> ShowS
$cshowsPrec :: Int -> PolylineSummary -> ShowS
Show
$(deriveFromJSON options ''PolylineSummary)