{-# LANGUAGE TemplateHaskell #-}

-- | <http://strava.github.io/api/v3/photos/>
module Strive.Types.Photos
  ( PhotoSummary(..)
  ) where

import Data.Aeson.TH (deriveFromJSON)
import Data.Text (Text)
import Data.Time.Clock (UTCTime)
import Strive.Enums (PhotoType, ResourceState)
import Strive.Internal.TH (options)

-- | <http://strava.github.io/api/v3/photos/#summary-and-detailed-representation-attributes>
data PhotoSummary = PhotoSummary
  { PhotoSummary -> Integer
photoSummary_activityId :: Integer
  , PhotoSummary -> Text
photoSummary_caption :: Text
  , PhotoSummary -> UTCTime
photoSummary_createdAt :: UTCTime
  , PhotoSummary -> Integer
photoSummary_id :: Integer
  , PhotoSummary -> Maybe (Double, Double)
photoSummary_location :: Maybe (Double, Double)
  , PhotoSummary -> Text
photoSummary_ref :: Text
  , PhotoSummary -> ResourceState
photoSummary_resourceState :: ResourceState
  , PhotoSummary -> PhotoType
photoSummary_type :: PhotoType
  , PhotoSummary -> Text
photoSummary_uid :: Text
  , PhotoSummary -> UTCTime
photoSummary_uploadedAt :: UTCTime
  }
  deriving Int -> PhotoSummary -> ShowS
[PhotoSummary] -> ShowS
PhotoSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PhotoSummary] -> ShowS
$cshowList :: [PhotoSummary] -> ShowS
show :: PhotoSummary -> String
$cshow :: PhotoSummary -> String
showsPrec :: Int -> PhotoSummary -> ShowS
$cshowsPrec :: Int -> PhotoSummary -> ShowS
Show

$(deriveFromJSON options ''PhotoSummary)