module Strive.Options.Activities
( CreateActivityOptions (..),
GetActivityOptions (..),
UpdateActivityOptions (..),
GetCurrentActivitiesOptions (..),
GetRelatedActivitiesOptions,
GetFeedOptions,
)
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 Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
import Network.HTTP.Types (QueryLike, toQuery)
import Strive.Enums (ActivityType)
import Strive.Internal.Options (PaginationOptions)
data CreateActivityOptions = CreateActivityOptions
{ CreateActivityOptions -> Maybe String
createActivityOptions_description :: Maybe String,
CreateActivityOptions -> Maybe Double
createActivityOptions_distance :: Maybe Double
}
deriving (Int -> CreateActivityOptions -> ShowS
[CreateActivityOptions] -> ShowS
CreateActivityOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateActivityOptions] -> ShowS
$cshowList :: [CreateActivityOptions] -> ShowS
show :: CreateActivityOptions -> String
$cshow :: CreateActivityOptions -> String
showsPrec :: Int -> CreateActivityOptions -> ShowS
$cshowsPrec :: Int -> CreateActivityOptions -> ShowS
Show)
instance Default CreateActivityOptions where
def :: CreateActivityOptions
def =
CreateActivityOptions
{ createActivityOptions_description :: Maybe String
createActivityOptions_description = forall a. Maybe a
Nothing,
createActivityOptions_distance :: Maybe Double
createActivityOptions_distance = forall a. Maybe a
Nothing
}
instance QueryLike CreateActivityOptions where
toQuery :: CreateActivityOptions -> Query
toQuery CreateActivityOptions
options =
forall a. QueryLike a => a -> Query
toQuery
[ (String
"description", CreateActivityOptions -> Maybe String
createActivityOptions_description CreateActivityOptions
options),
(String
"distance", forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (CreateActivityOptions -> Maybe Double
createActivityOptions_distance CreateActivityOptions
options))
]
newtype GetActivityOptions = GetActivityOptions
{ GetActivityOptions -> Bool
getActivityOptions_allEfforts :: Bool
}
deriving (Int -> GetActivityOptions -> ShowS
[GetActivityOptions] -> ShowS
GetActivityOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetActivityOptions] -> ShowS
$cshowList :: [GetActivityOptions] -> ShowS
show :: GetActivityOptions -> String
$cshow :: GetActivityOptions -> String
showsPrec :: Int -> GetActivityOptions -> ShowS
$cshowsPrec :: Int -> GetActivityOptions -> ShowS
Show)
instance Default GetActivityOptions where
def :: GetActivityOptions
def = GetActivityOptions {getActivityOptions_allEfforts :: Bool
getActivityOptions_allEfforts = Bool
False}
instance QueryLike GetActivityOptions where
toQuery :: GetActivityOptions -> Query
toQuery GetActivityOptions
options =
forall a. QueryLike a => a -> Query
toQuery
[ ( String
"approval_prompt",
ByteString -> String
unpack (ByteString -> ByteString
toStrict (forall a. ToJSON a => a -> ByteString
encode (GetActivityOptions -> Bool
getActivityOptions_allEfforts GetActivityOptions
options)))
)
]
data UpdateActivityOptions = UpdateActivityOptions
{ UpdateActivityOptions -> Maybe String
updateActivityOptions_name :: Maybe String,
UpdateActivityOptions -> Maybe ActivityType
updateActivityOptions_type :: Maybe ActivityType,
UpdateActivityOptions -> Maybe Bool
updateActivityOptions_private :: Maybe Bool,
UpdateActivityOptions -> Maybe Bool
updateActivityOptions_commute :: Maybe Bool,
UpdateActivityOptions -> Maybe Bool
updateActivityOptions_trainer :: Maybe Bool,
UpdateActivityOptions -> Maybe String
updateActivityOptions_gearId :: Maybe String,
UpdateActivityOptions -> Maybe String
updateActivityOptions_description :: Maybe String
}
deriving (Int -> UpdateActivityOptions -> ShowS
[UpdateActivityOptions] -> ShowS
UpdateActivityOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateActivityOptions] -> ShowS
$cshowList :: [UpdateActivityOptions] -> ShowS
show :: UpdateActivityOptions -> String
$cshow :: UpdateActivityOptions -> String
showsPrec :: Int -> UpdateActivityOptions -> ShowS
$cshowsPrec :: Int -> UpdateActivityOptions -> ShowS
Show)
instance Default UpdateActivityOptions where
def :: UpdateActivityOptions
def =
UpdateActivityOptions
{ updateActivityOptions_name :: Maybe String
updateActivityOptions_name = forall a. Maybe a
Nothing,
updateActivityOptions_type :: Maybe ActivityType
updateActivityOptions_type = forall a. Maybe a
Nothing,
updateActivityOptions_private :: Maybe Bool
updateActivityOptions_private = forall a. Maybe a
Nothing,
updateActivityOptions_commute :: Maybe Bool
updateActivityOptions_commute = forall a. Maybe a
Nothing,
updateActivityOptions_trainer :: Maybe Bool
updateActivityOptions_trainer = forall a. Maybe a
Nothing,
updateActivityOptions_gearId :: Maybe String
updateActivityOptions_gearId = forall a. Maybe a
Nothing,
updateActivityOptions_description :: Maybe String
updateActivityOptions_description = forall a. Maybe a
Nothing
}
instance QueryLike UpdateActivityOptions where
toQuery :: UpdateActivityOptions -> Query
toQuery UpdateActivityOptions
options =
forall a. QueryLike a => a -> Query
toQuery
[ (String
"name", UpdateActivityOptions -> Maybe String
updateActivityOptions_name UpdateActivityOptions
options),
(String
"type", forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Show a => a -> String
show (UpdateActivityOptions -> Maybe ActivityType
updateActivityOptions_type UpdateActivityOptions
options)),
( String
"private",
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)
(UpdateActivityOptions -> Maybe Bool
updateActivityOptions_private UpdateActivityOptions
options)
),
( String
"commute",
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)
(UpdateActivityOptions -> Maybe Bool
updateActivityOptions_commute UpdateActivityOptions
options)
),
( String
"trainer",
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)
(UpdateActivityOptions -> Maybe Bool
updateActivityOptions_trainer UpdateActivityOptions
options)
),
(String
"gear_id", UpdateActivityOptions -> Maybe String
updateActivityOptions_gearId UpdateActivityOptions
options),
(String
"description", UpdateActivityOptions -> Maybe String
updateActivityOptions_description UpdateActivityOptions
options)
]
data GetCurrentActivitiesOptions = GetCurrentActivitiesOptions
{ GetCurrentActivitiesOptions -> Maybe UTCTime
getCurrentActivitiesOptions_before :: Maybe UTCTime,
GetCurrentActivitiesOptions -> Maybe UTCTime
getCurrentActivitiesOptions_after :: Maybe UTCTime,
GetCurrentActivitiesOptions -> Integer
getCurrentActivitiesOptions_page :: Integer,
GetCurrentActivitiesOptions -> Integer
getCurrentActivitiesOptions_perPage :: Integer
}
deriving (Int -> GetCurrentActivitiesOptions -> ShowS
[GetCurrentActivitiesOptions] -> ShowS
GetCurrentActivitiesOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetCurrentActivitiesOptions] -> ShowS
$cshowList :: [GetCurrentActivitiesOptions] -> ShowS
show :: GetCurrentActivitiesOptions -> String
$cshow :: GetCurrentActivitiesOptions -> String
showsPrec :: Int -> GetCurrentActivitiesOptions -> ShowS
$cshowsPrec :: Int -> GetCurrentActivitiesOptions -> ShowS
Show)
instance Default GetCurrentActivitiesOptions where
def :: GetCurrentActivitiesOptions
def =
GetCurrentActivitiesOptions
{ getCurrentActivitiesOptions_before :: Maybe UTCTime
getCurrentActivitiesOptions_before = forall a. Maybe a
Nothing,
getCurrentActivitiesOptions_after :: Maybe UTCTime
getCurrentActivitiesOptions_after = forall a. Maybe a
Nothing,
getCurrentActivitiesOptions_page :: Integer
getCurrentActivitiesOptions_page = Integer
1,
getCurrentActivitiesOptions_perPage :: Integer
getCurrentActivitiesOptions_perPage = Integer
200
}
instance QueryLike GetCurrentActivitiesOptions where
toQuery :: GetCurrentActivitiesOptions -> Query
toQuery GetCurrentActivitiesOptions
options =
forall a. QueryLike a => a -> Query
toQuery
[ ( String
"before",
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(forall a. Show a => a -> String
show forall b c a. (b -> c) -> (a -> b) -> a -> c
. UTCTime -> POSIXTime
utcTimeToPOSIXSeconds)
(GetCurrentActivitiesOptions -> Maybe UTCTime
getCurrentActivitiesOptions_before GetCurrentActivitiesOptions
options)
),
( String
"after",
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(forall a. Show a => a -> String
show forall b c a. (b -> c) -> (a -> b) -> a -> c
. UTCTime -> POSIXTime
utcTimeToPOSIXSeconds)
(GetCurrentActivitiesOptions -> Maybe UTCTime
getCurrentActivitiesOptions_after GetCurrentActivitiesOptions
options)
),
(String
"page", forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (GetCurrentActivitiesOptions -> Integer
getCurrentActivitiesOptions_page GetCurrentActivitiesOptions
options))),
(String
"per_page", forall a. a -> Maybe a
Just (forall a. Show a => a -> String
show (GetCurrentActivitiesOptions -> Integer
getCurrentActivitiesOptions_perPage GetCurrentActivitiesOptions
options)))
]
type GetRelatedActivitiesOptions = PaginationOptions
type GetFeedOptions = PaginationOptions