module Spotify.Servant.Player where import Spotify.Servant.Core import Spotify.Types.Internal.CustomJSON import Spotify.Types.Misc import Spotify.Types.Player import Data.Aeson (FromJSON, ToJSON) import GHC.Generics (Generic) import Servant.API ( JSON, QueryParam, QueryParam', ReqBody, Required, Strict, type (:>), ) type GetPlaybackState = "me" :> "player" :> QueryParam "market" Market :> SpotGet PlaybackState type TransferPlayback = "me" :> "player" :> ReqBody '[JSON] TransferPlaybackBody :> SpotPutNoContent data TransferPlaybackBody = TransferPlaybackBody { TransferPlaybackBody -> [DeviceID] device_ids :: [DeviceID] , TransferPlaybackBody -> Bool play :: Bool } deriving (TransferPlaybackBody -> TransferPlaybackBody -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: TransferPlaybackBody -> TransferPlaybackBody -> Bool $c/= :: TransferPlaybackBody -> TransferPlaybackBody -> Bool == :: TransferPlaybackBody -> TransferPlaybackBody -> Bool $c== :: TransferPlaybackBody -> TransferPlaybackBody -> Bool Eq, Eq TransferPlaybackBody TransferPlaybackBody -> TransferPlaybackBody -> Bool TransferPlaybackBody -> TransferPlaybackBody -> Ordering TransferPlaybackBody -> TransferPlaybackBody -> TransferPlaybackBody forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: TransferPlaybackBody -> TransferPlaybackBody -> TransferPlaybackBody $cmin :: TransferPlaybackBody -> TransferPlaybackBody -> TransferPlaybackBody max :: TransferPlaybackBody -> TransferPlaybackBody -> TransferPlaybackBody $cmax :: TransferPlaybackBody -> TransferPlaybackBody -> TransferPlaybackBody >= :: TransferPlaybackBody -> TransferPlaybackBody -> Bool $c>= :: TransferPlaybackBody -> TransferPlaybackBody -> Bool > :: TransferPlaybackBody -> TransferPlaybackBody -> Bool $c> :: TransferPlaybackBody -> TransferPlaybackBody -> Bool <= :: TransferPlaybackBody -> TransferPlaybackBody -> Bool $c<= :: TransferPlaybackBody -> TransferPlaybackBody -> Bool < :: TransferPlaybackBody -> TransferPlaybackBody -> Bool $c< :: TransferPlaybackBody -> TransferPlaybackBody -> Bool compare :: TransferPlaybackBody -> TransferPlaybackBody -> Ordering $ccompare :: TransferPlaybackBody -> TransferPlaybackBody -> Ordering Ord, Int -> TransferPlaybackBody -> ShowS [TransferPlaybackBody] -> ShowS TransferPlaybackBody -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [TransferPlaybackBody] -> ShowS $cshowList :: [TransferPlaybackBody] -> ShowS show :: TransferPlaybackBody -> String $cshow :: TransferPlaybackBody -> String showsPrec :: Int -> TransferPlaybackBody -> ShowS $cshowsPrec :: Int -> TransferPlaybackBody -> ShowS Show, forall x. Rep TransferPlaybackBody x -> TransferPlaybackBody forall x. TransferPlaybackBody -> Rep TransferPlaybackBody x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep TransferPlaybackBody x -> TransferPlaybackBody $cfrom :: forall x. TransferPlaybackBody -> Rep TransferPlaybackBody x Generic) deriving ([TransferPlaybackBody] -> Encoding [TransferPlaybackBody] -> Value TransferPlaybackBody -> Encoding TransferPlaybackBody -> Value forall a. (a -> Value) -> (a -> Encoding) -> ([a] -> Value) -> ([a] -> Encoding) -> ToJSON a toEncodingList :: [TransferPlaybackBody] -> Encoding $ctoEncodingList :: [TransferPlaybackBody] -> Encoding toJSONList :: [TransferPlaybackBody] -> Value $ctoJSONList :: [TransferPlaybackBody] -> Value toEncoding :: TransferPlaybackBody -> Encoding $ctoEncoding :: TransferPlaybackBody -> Encoding toJSON :: TransferPlaybackBody -> Value $ctoJSON :: TransferPlaybackBody -> Value ToJSON) type GetAvailableDevices = "me" :> "player" :> "devices" :> SpotGet GetAvailableDevicesResponse newtype GetAvailableDevicesResponse = GetAvailableDevicesResponse { GetAvailableDevicesResponse -> [Device] devices :: [Device] } deriving (GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool $c/= :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool == :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool $c== :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool Eq, Eq GetAvailableDevicesResponse GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Ordering GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> GetAvailableDevicesResponse forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> GetAvailableDevicesResponse $cmin :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> GetAvailableDevicesResponse max :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> GetAvailableDevicesResponse $cmax :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> GetAvailableDevicesResponse >= :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool $c>= :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool > :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool $c> :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool <= :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool $c<= :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool < :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool $c< :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Bool compare :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Ordering $ccompare :: GetAvailableDevicesResponse -> GetAvailableDevicesResponse -> Ordering Ord, Int -> GetAvailableDevicesResponse -> ShowS [GetAvailableDevicesResponse] -> ShowS GetAvailableDevicesResponse -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [GetAvailableDevicesResponse] -> ShowS $cshowList :: [GetAvailableDevicesResponse] -> ShowS show :: GetAvailableDevicesResponse -> String $cshow :: GetAvailableDevicesResponse -> String showsPrec :: Int -> GetAvailableDevicesResponse -> ShowS $cshowsPrec :: Int -> GetAvailableDevicesResponse -> ShowS Show, forall x. Rep GetAvailableDevicesResponse x -> GetAvailableDevicesResponse forall x. GetAvailableDevicesResponse -> Rep GetAvailableDevicesResponse x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep GetAvailableDevicesResponse x -> GetAvailableDevicesResponse $cfrom :: forall x. GetAvailableDevicesResponse -> Rep GetAvailableDevicesResponse x Generic) deriving (Value -> Parser [GetAvailableDevicesResponse] Value -> Parser GetAvailableDevicesResponse forall a. (Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a parseJSONList :: Value -> Parser [GetAvailableDevicesResponse] $cparseJSONList :: Value -> Parser [GetAvailableDevicesResponse] parseJSON :: Value -> Parser GetAvailableDevicesResponse $cparseJSON :: Value -> Parser GetAvailableDevicesResponse FromJSON) via CustomJSON GetAvailableDevicesResponse type GetCurrentlyPlayingTrack = "me" :> "player" :> "currently-playing" :> QueryParam "market" Market :> SpotGet CurrentlyPlayingTrack type StartPlayback = "me" :> "player" :> "play" :> QueryParam "device_id" DeviceID :> ReqBody '[JSON] StartPlaybackOpts :> SpotPutNoContent data StartPlaybackOpts = StartPlaybackOpts { StartPlaybackOpts -> Maybe URI context_uri :: Maybe URI , StartPlaybackOpts -> Maybe [URI] uris :: Maybe [URI] , StartPlaybackOpts -> Maybe Offset offset :: Maybe Offset } deriving (StartPlaybackOpts -> StartPlaybackOpts -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: StartPlaybackOpts -> StartPlaybackOpts -> Bool $c/= :: StartPlaybackOpts -> StartPlaybackOpts -> Bool == :: StartPlaybackOpts -> StartPlaybackOpts -> Bool $c== :: StartPlaybackOpts -> StartPlaybackOpts -> Bool Eq, Eq StartPlaybackOpts StartPlaybackOpts -> StartPlaybackOpts -> Bool StartPlaybackOpts -> StartPlaybackOpts -> Ordering StartPlaybackOpts -> StartPlaybackOpts -> StartPlaybackOpts forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: StartPlaybackOpts -> StartPlaybackOpts -> StartPlaybackOpts $cmin :: StartPlaybackOpts -> StartPlaybackOpts -> StartPlaybackOpts max :: StartPlaybackOpts -> StartPlaybackOpts -> StartPlaybackOpts $cmax :: StartPlaybackOpts -> StartPlaybackOpts -> StartPlaybackOpts >= :: StartPlaybackOpts -> StartPlaybackOpts -> Bool $c>= :: StartPlaybackOpts -> StartPlaybackOpts -> Bool > :: StartPlaybackOpts -> StartPlaybackOpts -> Bool $c> :: StartPlaybackOpts -> StartPlaybackOpts -> Bool <= :: StartPlaybackOpts -> StartPlaybackOpts -> Bool $c<= :: StartPlaybackOpts -> StartPlaybackOpts -> Bool < :: StartPlaybackOpts -> StartPlaybackOpts -> Bool $c< :: StartPlaybackOpts -> StartPlaybackOpts -> Bool compare :: StartPlaybackOpts -> StartPlaybackOpts -> Ordering $ccompare :: StartPlaybackOpts -> StartPlaybackOpts -> Ordering Ord, Int -> StartPlaybackOpts -> ShowS [StartPlaybackOpts] -> ShowS StartPlaybackOpts -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [StartPlaybackOpts] -> ShowS $cshowList :: [StartPlaybackOpts] -> ShowS show :: StartPlaybackOpts -> String $cshow :: StartPlaybackOpts -> String showsPrec :: Int -> StartPlaybackOpts -> ShowS $cshowsPrec :: Int -> StartPlaybackOpts -> ShowS Show, forall x. Rep StartPlaybackOpts x -> StartPlaybackOpts forall x. StartPlaybackOpts -> Rep StartPlaybackOpts x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep StartPlaybackOpts x -> StartPlaybackOpts $cfrom :: forall x. StartPlaybackOpts -> Rep StartPlaybackOpts x Generic) deriving ([StartPlaybackOpts] -> Encoding [StartPlaybackOpts] -> Value StartPlaybackOpts -> Encoding StartPlaybackOpts -> Value forall a. (a -> Value) -> (a -> Encoding) -> ([a] -> Value) -> ([a] -> Encoding) -> ToJSON a toEncodingList :: [StartPlaybackOpts] -> Encoding $ctoEncodingList :: [StartPlaybackOpts] -> Encoding toJSONList :: [StartPlaybackOpts] -> Value $ctoJSONList :: [StartPlaybackOpts] -> Value toEncoding :: StartPlaybackOpts -> Encoding $ctoEncoding :: StartPlaybackOpts -> Encoding toJSON :: StartPlaybackOpts -> Value $ctoJSON :: StartPlaybackOpts -> Value ToJSON) emptyStartPlaybackOpts :: StartPlaybackOpts emptyStartPlaybackOpts :: StartPlaybackOpts emptyStartPlaybackOpts = Maybe URI -> Maybe [URI] -> Maybe Offset -> StartPlaybackOpts StartPlaybackOpts forall a. Maybe a Nothing forall a. Maybe a Nothing forall a. Maybe a Nothing type PausePlayback = "me" :> "player" :> "pause" :> QueryParam "device_id" DeviceID :> SpotPutNoContent type SkipToNext = "me" :> "player" :> "next" :> QueryParam "device_id" DeviceID :> SpotPostNoContent type SkipToPrevious = "me" :> "player" :> "previous" :> QueryParam "device_id" DeviceID :> SpotPostNoContent type SeekToPosition = "me" :> "player" :> "seek" :> QueryParam' '[Strict, Required] "position_ms" Int :> QueryParam "device_id" DeviceID :> SpotPutNoContent