-- | 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 "," (fmap show types) ] query = toQuery options