-- |
module Strive.Actions.Streams
( getActivityStreams
, getEffortStreams
, getSegmentStreams
) where
import Data.Aeson (FromJSON)
import Data.List (intercalate)
import Network.HTTP.Types (toQuery)
import Strive.Client (Client)
import Strive.Enums (StreamType)
import Strive.Internal.HTTP (get)
import Strive.Options (GetStreamsOptions)
import Strive.Types (StreamDetailed)
-- |
getActivityStreams :: Client -> Integer -> [StreamType] -> GetStreamsOptions -> IO (Either String [StreamDetailed])
getActivityStreams = flip getStreams "activities"
-- |
getEffortStreams :: Client -> Integer -> [StreamType] -> GetStreamsOptions -> IO (Either String [StreamDetailed])
getEffortStreams = flip getStreams "segment_efforts"
-- |
getSegmentStreams :: Client -> Integer -> [StreamType] -> GetStreamsOptions -> IO (Either String [StreamDetailed])
getSegmentStreams = flip getStreams "segments"
getStreams :: FromJSON a => Client -> String -> Integer -> [StreamType] -> GetStreamsOptions -> IO (Either String a)
getStreams client kind id_ types options = get client resource query
where
resource = concat
[ "api/v3/"
, kind
, "/"
, show id_
, "/streams/"
, intercalate "," (map show types)
]
query = toQuery options