-- | module Strive.Actions.Streams ( getActivityStreams , getEffortStreams , getSegmentStreams ) where import Data.Aeson (FromJSON) import Data.List (intercalate) import Network.HTTP.Types (toQuery) import Strive.Aliases (Result, StreamId) import Strive.Client (Client) import Strive.Enums (StreamType) import Strive.Internal.HTTP (get) import Strive.Options (GetStreamsOptions) import Strive.Types (StreamDetailed) -- | getActivityStreams :: Client -> StreamId -> [StreamType] -> GetStreamsOptions -> IO (Result [StreamDetailed]) getActivityStreams = flip getStreams "activities" -- | getEffortStreams :: Client -> StreamId -> [StreamType] -> GetStreamsOptions -> IO (Result [StreamDetailed]) getEffortStreams = flip getStreams "segment_efforts" -- | getSegmentStreams :: Client -> StreamId -> [StreamType] -> GetStreamsOptions -> IO (Result [StreamDetailed]) getSegmentStreams = flip getStreams "segments" getStreams :: FromJSON a => Client -> String -> StreamId -> [StreamType] -> GetStreamsOptions -> IO (Result 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