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