-- | 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