-- | 'Strive.Actions.Clubs' module Strive.Options.Clubs ( GetClubMembersOptions, GetClubActivitiesOptions (..), ) where import Data.Default (Default, def) import Data.Time.Clock (UTCTime) import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds) import Network.HTTP.Types (QueryLike, toQuery) import Strive.Internal.Options (PaginationOptions) -- | 'Strive.Actions.getClubMembers' type GetClubMembersOptions = PaginationOptions -- | 'Strive.Actions.getClubActivities' data GetClubActivitiesOptions = GetClubActivitiesOptions { getClubActivitiesOptions_before :: Maybe UTCTime, getClubActivitiesOptions_after :: Maybe UTCTime, getClubActivitiesOptions_page :: Integer, getClubActivitiesOptions_perPage :: Integer } deriving (Show) instance Default GetClubActivitiesOptions where def = GetClubActivitiesOptions { getClubActivitiesOptions_before = Nothing, getClubActivitiesOptions_after = Nothing, getClubActivitiesOptions_page = 1, getClubActivitiesOptions_perPage = 200 } instance QueryLike GetClubActivitiesOptions where toQuery options = toQuery [ ( "before", fmap (show . utcTimeToPOSIXSeconds) (getClubActivitiesOptions_before options) ), ( "after", fmap (show . utcTimeToPOSIXSeconds) (getClubActivitiesOptions_after options) ), ("page", Just (show (getClubActivitiesOptions_page options))), ("per_page", Just (show (getClubActivitiesOptions_perPage options))) ]