Spotify.NET/SpotifyAPI.Web/Clients/Interfaces/IPlayerClient.cs
Gavin b39941f523
Adding Endpoint to get a User's Queue (#807)
* Adding support to Get a player queue

* Update to return Tracks and Episodes
2022-11-08 21:58:05 +01:00

218 lines
9.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Net;
using System.Threading.Tasks;
namespace SpotifyAPI.Web
{
/// <summary>
/// Player Endpoints.
/// These endpoints are in beta.
/// While we encourage you to build with them, a situation may arise
/// where we need to disable some or all of the functionality and/or change how
/// they work without prior notice. Please report any issues via our developer community forum.
/// </summary>
public interface IPlayerClient
{
/// <summary>
/// Skips to next track in the users queue.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-skip-users-playback-to-next-track
/// </remarks>
/// <returns></returns>
Task<bool> SkipNext();
/// <summary>
/// Skips to next track in the users queue.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-skip-users-playback-to-next-track
/// </remarks>
/// <returns></returns>
Task<bool> SkipNext(PlayerSkipNextRequest request);
/// <summary>
/// Set the repeat mode for the users playback. Options are repeat-track, repeat-context, and off.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-set-repeat-mode-on-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> SetRepeat(PlayerSetRepeatRequest request);
/// <summary>
/// Transfer playback to a new device and determine if it should start playing.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-transfer-a-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> TransferPlayback(PlayerTransferPlaybackRequest request);
/// <summary>
/// Get the object currently being played on the users Spotify account.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-the-users-currently-playing-track
/// </remarks>
/// <returns></returns>
Task<CurrentlyPlaying> GetCurrentlyPlaying(PlayerCurrentlyPlayingRequest request);
/// <summary>
/// Get information about the users current playback state, including track or episode, progress, and active device.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-information-about-the-users-current-playback
/// </remarks>
/// <returns></returns>
Task<CurrentlyPlayingContext> GetCurrentPlayback();
/// <summary>
/// Get information about the users current playback state, including track or episode, progress, and active device.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-information-about-the-users-current-playback
/// </remarks>
/// <returns></returns>
Task<CurrentlyPlayingContext> GetCurrentPlayback(PlayerCurrentPlaybackRequest request);
/// <summary>
/// Seeks to the given position in the users currently playing track.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-seek-to-position-in-currently-playing-track
/// </remarks>
/// <returns></returns>
Task<bool> SeekTo(PlayerSeekToRequest request);
/// <summary>
/// Skips to previous track in the users queue.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-skip-users-playback-to-previous-track
/// </remarks>
/// <returns></returns>
Task<bool> SkipPrevious();
/// <summary>
/// Skips to previous track in the users queue.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-skip-users-playback-to-previous-track
/// </remarks>
/// <returns></returns>
Task<bool> SkipPrevious(PlayerSkipPreviousRequest request);
/// <summary>
/// Start a new context or resume current playback on the users active device.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-start-a-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> ResumePlayback();
/// <summary>
/// Start a new context or resume current playback on the users active device.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-start-a-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> ResumePlayback(PlayerResumePlaybackRequest request);
/// <summary>
/// Pause playback on the users account.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-pause-a-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> PausePlayback();
/// <summary>
/// Pause playback on the users account.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-pause-a-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> PausePlayback(PlayerPausePlaybackRequest request);
/// <summary>
/// Set the volume for the users current playback device.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-set-volume-for-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> SetVolume(PlayerVolumeRequest request);
/// <summary>
/// Get tracks from the current users recently played tracks. Note: Currently doesnt support podcast episodes.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-recently-played
/// </remarks>
/// <returns></returns>
Task<CursorPaging<PlayHistoryItem>> GetRecentlyPlayed();
/// <summary>
/// Get tracks from the current users recently played tracks. Note: Currently doesnt support podcast episodes.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-recently-played
/// </remarks>
/// <returns></returns>
Task<CursorPaging<PlayHistoryItem>> GetRecentlyPlayed(PlayerRecentlyPlayedRequest request);
/// <summary>
/// Get information about a users available devices.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-a-users-available-devices
/// </remarks>
/// <returns></returns>
Task<DeviceResponse> GetAvailableDevices();
/// <summary>
/// Toggle shuffle on or off for users playback.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-toggle-shuffle-for-users-playback
/// </remarks>
/// <returns></returns>
Task<bool> SetShuffle(PlayerShuffleRequest request);
/// <summary>
/// Add an item to the end of the users current playback queue.
/// </summary>
/// <param name="request">The request-model which contains required and optional parameters.</param>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-add-to-queue
/// </remarks>
/// <returns></returns>
Task<bool> AddToQueue(PlayerAddToQueueRequest request);
/// <summary>
/// Get the list of objects that make up the user's queue.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference/#/operations/get-queue
/// </remarks>
/// <returns></returns>
Task<QueueResponse> GetQueue();
}
}