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