module Strive.Options.Segments
( GetStarredSegmentsOptions
, GetSegmentEffortsOptions(..)
, GetSegmentLeaderboardOptions(..)
, ExploreSegmentsOptions(..)
) where
import Data.Aeson (encode)
import Data.ByteString.Char8 (unpack)
import Data.ByteString.Lazy (toStrict)
import Data.Default (Default, def)
import Data.Time.Clock (UTCTime)
import Network.HTTP.Types (QueryLike, toQuery)
import Strive.Enums
(AgeGroup, Gender, SegmentActivityType(Riding), WeightClass)
import Strive.Internal.Options (PaginationOptions)
type GetStarredSegmentsOptions = PaginationOptions
data GetSegmentEffortsOptions = GetSegmentEffortsOptions
{ GetSegmentEffortsOptions -> Maybe Integer
getSegmentEffortsOptions_athleteId :: Maybe Integer
, GetSegmentEffortsOptions -> Maybe (UTCTime, UTCTime)
getSegmentEffortsOptions_range :: Maybe (UTCTime, UTCTime)
, GetSegmentEffortsOptions -> Integer
getSegmentEffortsOptions_page :: Integer
, GetSegmentEffortsOptions -> Integer
getSegmentEffortsOptions_perPage :: Integer
}
deriving Int -> GetSegmentEffortsOptions -> ShowS
[GetSegmentEffortsOptions] -> ShowS
GetSegmentEffortsOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetSegmentEffortsOptions] -> ShowS
$cshowList :: [GetSegmentEffortsOptions] -> ShowS
show :: GetSegmentEffortsOptions -> String
$cshow :: GetSegmentEffortsOptions -> String
showsPrec :: Int -> GetSegmentEffortsOptions -> ShowS
$cshowsPrec :: Int -> GetSegmentEffortsOptions -> ShowS
Show
instance Default GetSegmentEffortsOptions where
def :: GetSegmentEffortsOptions
def = GetSegmentEffortsOptions
{ getSegmentEffortsOptions_athleteId :: Maybe Integer
getSegmentEffortsOptions_athleteId = forall a. Maybe a
Nothing
, getSegmentEffortsOptions_range :: Maybe (UTCTime, UTCTime)
getSegmentEffortsOptions_range = forall a. Maybe a
Nothing
, getSegmentEffortsOptions_page :: Integer
getSegmentEffortsOptions_page = Integer
1
, getSegmentEffortsOptions_perPage :: Integer
getSegmentEffortsOptions_perPage = Integer
200
}
instance QueryLike GetSegmentEffortsOptions where
toQuery :: GetSegmentEffortsOptions -> Query
toQuery GetSegmentEffortsOptions
options = forall a. QueryLike a => a -> Query
toQuery
[ (String
"athlete_id", forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (GetSegmentEffortsOptions -> Maybe Integer
getSegmentEffortsOptions_athleteId GetSegmentEffortsOptions
options))
, ( String
"start_date_local"
, forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(ByteString -> String
unpack forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
toStrict forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> ByteString
encode forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a, b) -> a
fst)
(GetSegmentEffortsOptions -> Maybe (UTCTime, UTCTime)
getSegmentEffortsOptions_range GetSegmentEffortsOptions
options)
)
, ( String
"end_date_local"
, forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(ByteString -> String
unpack forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
toStrict forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> ByteString
encode forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a, b) -> b
snd)
(GetSegmentEffortsOptions -> Maybe (UTCTime, UTCTime)
getSegmentEffortsOptions_range GetSegmentEffortsOptions
options)
)
, (String
"page", forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (GetSegmentEffortsOptions -> Integer
getSegmentEffortsOptions_page GetSegmentEffortsOptions
options)))
, (String
"per_page", forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (GetSegmentEffortsOptions -> Integer
getSegmentEffortsOptions_perPage GetSegmentEffortsOptions
options)))
]
data GetSegmentLeaderboardOptions = GetSegmentLeaderboardOptions
{ GetSegmentLeaderboardOptions -> Maybe Gender
getSegmentLeaderboardOptions_gender :: Maybe Gender
, GetSegmentLeaderboardOptions -> Maybe AgeGroup
getSegmentLeaderboardOptions_ageGroup :: Maybe AgeGroup
, GetSegmentLeaderboardOptions -> Maybe WeightClass
getSegmentLeaderboardOptions_weightClass :: Maybe WeightClass
, GetSegmentLeaderboardOptions -> Maybe Bool
getSegmentLeaderboardOptions_following :: Maybe Bool
, GetSegmentLeaderboardOptions -> Maybe Integer
getSegmentLeaderboardOptions_clubId :: Maybe Integer
, GetSegmentLeaderboardOptions -> Maybe String
getSegmentLeaderboardOptions_dateRange :: Maybe String
, GetSegmentLeaderboardOptions -> Maybe Integer
getSegmentLeaderboardOptions_contextEntries :: Maybe Integer
, GetSegmentLeaderboardOptions -> Integer
getSegmentLeaderboardOptions_page :: Integer
, GetSegmentLeaderboardOptions -> Integer
getSegmentLeaderboardOptions_perPage :: Integer
}
deriving Int -> GetSegmentLeaderboardOptions -> ShowS
[GetSegmentLeaderboardOptions] -> ShowS
GetSegmentLeaderboardOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetSegmentLeaderboardOptions] -> ShowS
$cshowList :: [GetSegmentLeaderboardOptions] -> ShowS
show :: GetSegmentLeaderboardOptions -> String
$cshow :: GetSegmentLeaderboardOptions -> String
showsPrec :: Int -> GetSegmentLeaderboardOptions -> ShowS
$cshowsPrec :: Int -> GetSegmentLeaderboardOptions -> ShowS
Show
instance Default GetSegmentLeaderboardOptions where
def :: GetSegmentLeaderboardOptions
def = GetSegmentLeaderboardOptions
{ getSegmentLeaderboardOptions_gender :: Maybe Gender
getSegmentLeaderboardOptions_gender = forall a. Maybe a
Nothing
, getSegmentLeaderboardOptions_ageGroup :: Maybe AgeGroup
getSegmentLeaderboardOptions_ageGroup = forall a. Maybe a
Nothing
, getSegmentLeaderboardOptions_weightClass :: Maybe WeightClass
getSegmentLeaderboardOptions_weightClass = forall a. Maybe a
Nothing
, getSegmentLeaderboardOptions_following :: Maybe Bool
getSegmentLeaderboardOptions_following = forall a. Maybe a
Nothing
, getSegmentLeaderboardOptions_clubId :: Maybe Integer
getSegmentLeaderboardOptions_clubId = forall a. Maybe a
Nothing
, getSegmentLeaderboardOptions_dateRange :: Maybe String
getSegmentLeaderboardOptions_dateRange = forall a. Maybe a
Nothing
, getSegmentLeaderboardOptions_contextEntries :: Maybe Integer
getSegmentLeaderboardOptions_contextEntries = forall a. Maybe a
Nothing
, getSegmentLeaderboardOptions_page :: Integer
getSegmentLeaderboardOptions_page = Integer
1
, getSegmentLeaderboardOptions_perPage :: Integer
getSegmentLeaderboardOptions_perPage = Integer
200
}
instance QueryLike GetSegmentLeaderboardOptions where
toQuery :: GetSegmentLeaderboardOptions -> Query
toQuery GetSegmentLeaderboardOptions
options = forall a. QueryLike a => a -> Query
toQuery
[ (String
"gender", forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (GetSegmentLeaderboardOptions -> Maybe Gender
getSegmentLeaderboardOptions_gender GetSegmentLeaderboardOptions
options))
, (String
"age_group", forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (GetSegmentLeaderboardOptions -> Maybe AgeGroup
getSegmentLeaderboardOptions_ageGroup GetSegmentLeaderboardOptions
options))
, ( String
"weight_class"
, forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (GetSegmentLeaderboardOptions -> Maybe WeightClass
getSegmentLeaderboardOptions_weightClass GetSegmentLeaderboardOptions
options)
)
, ( String
"following"
, forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(ByteString -> String
unpack forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
toStrict forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> ByteString
encode)
(GetSegmentLeaderboardOptions -> Maybe Bool
getSegmentLeaderboardOptions_following GetSegmentLeaderboardOptions
options)
)
, (String
"club_id", forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (GetSegmentLeaderboardOptions -> Maybe Integer
getSegmentLeaderboardOptions_clubId GetSegmentLeaderboardOptions
options))
, (String
"date_range", GetSegmentLeaderboardOptions -> Maybe String
getSegmentLeaderboardOptions_dateRange GetSegmentLeaderboardOptions
options)
, ( String
"context_entries"
, forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (GetSegmentLeaderboardOptions -> Maybe Integer
getSegmentLeaderboardOptions_contextEntries GetSegmentLeaderboardOptions
options)
)
, (String
"page", forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (GetSegmentLeaderboardOptions -> Integer
getSegmentLeaderboardOptions_page GetSegmentLeaderboardOptions
options)))
, (String
"per_page", forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (GetSegmentLeaderboardOptions -> Integer
getSegmentLeaderboardOptions_perPage GetSegmentLeaderboardOptions
options)))
]
data ExploreSegmentsOptions = ExploreSegmentsOptions
{ ExploreSegmentsOptions -> SegmentActivityType
exploreSegmentsOptions_activityType :: SegmentActivityType
, ExploreSegmentsOptions -> Integer
exploreSegmentsOptions_minCat :: Integer
, ExploreSegmentsOptions -> Integer
exploreSegmentsOptions_maxCat :: Integer
}
deriving Int -> ExploreSegmentsOptions -> ShowS
[ExploreSegmentsOptions] -> ShowS
ExploreSegmentsOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ExploreSegmentsOptions] -> ShowS
$cshowList :: [ExploreSegmentsOptions] -> ShowS
show :: ExploreSegmentsOptions -> String
$cshow :: ExploreSegmentsOptions -> String
showsPrec :: Int -> ExploreSegmentsOptions -> ShowS
$cshowsPrec :: Int -> ExploreSegmentsOptions -> ShowS
Show
instance Default ExploreSegmentsOptions where
def :: ExploreSegmentsOptions
def = ExploreSegmentsOptions
{ exploreSegmentsOptions_activityType :: SegmentActivityType
exploreSegmentsOptions_activityType = SegmentActivityType
Riding
, exploreSegmentsOptions_minCat :: Integer
exploreSegmentsOptions_minCat = Integer
0
, exploreSegmentsOptions_maxCat :: Integer
exploreSegmentsOptions_maxCat = Integer
5
}
instance QueryLike ExploreSegmentsOptions where
toQuery :: ExploreSegmentsOptions -> Query
toQuery ExploreSegmentsOptions
options = forall a. QueryLike a => a -> Query
toQuery
[ (String
"activity_type", forall a. Show a => a -> String
show (ExploreSegmentsOptions -> SegmentActivityType
exploreSegmentsOptions_activityType ExploreSegmentsOptions
options))
, (String
"min_cat", forall a. Show a => a -> String
show (ExploreSegmentsOptions -> Integer
exploreSegmentsOptions_minCat ExploreSegmentsOptions
options))
, (String
"max_cat", forall a. Show a => a -> String
show (ExploreSegmentsOptions -> Integer
exploreSegmentsOptions_maxCat ExploreSegmentsOptions
options))
]