mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-23 22:56:25 +00:00
Added some more playlists endpoints
This commit is contained in:
parent
870b13eb2d
commit
93bcff5c1d
@ -5,5 +5,12 @@ namespace SpotifyAPI.Web
|
||||
public interface IPlaylistsClient
|
||||
{
|
||||
Task<SnapshotResponse> RemoveItems(string playlistId, PlaylistRemoveItemsRequest request);
|
||||
|
||||
Task<SnapshotResponse> AddItems(string playlistId, PlaylistAddItemsRequest request);
|
||||
|
||||
Task<Paging<PlaylistTrack<IPlaylistItem>>> GetItems(string playlistId);
|
||||
Task<Paging<PlaylistTrack<IPlaylistItem>>> GetItems(string playlistId, PlaylistGetItemsRequest request);
|
||||
|
||||
Task<FullPlaylist> Create(string userId, PlaylistCreateRequest request);
|
||||
}
|
||||
}
|
||||
|
@ -15,5 +15,36 @@ namespace SpotifyAPI.Web
|
||||
|
||||
return API.Delete<SnapshotResponse>(URLs.PlaylistTracks(playlistId), null, request.BuildBodyParams());
|
||||
}
|
||||
|
||||
public Task<SnapshotResponse> AddItems(string playlistId, PlaylistAddItemsRequest request)
|
||||
{
|
||||
Ensure.ArgumentNotNullOrEmptyString(playlistId, nameof(playlistId));
|
||||
Ensure.ArgumentNotNull(request, nameof(request));
|
||||
|
||||
return API.Post<SnapshotResponse>(URLs.PlaylistTracks(playlistId), null, request.BuildBodyParams());
|
||||
}
|
||||
|
||||
public Task<Paging<PlaylistTrack<IPlaylistItem>>> GetItems(string playlistId)
|
||||
{
|
||||
Ensure.ArgumentNotNullOrEmptyString(playlistId, nameof(playlistId));
|
||||
|
||||
return API.Get<Paging<PlaylistTrack<IPlaylistItem>>>(URLs.PlaylistTracks(playlistId));
|
||||
}
|
||||
|
||||
public Task<Paging<PlaylistTrack<IPlaylistItem>>> GetItems(string playlistId, PlaylistGetItemsRequest request)
|
||||
{
|
||||
Ensure.ArgumentNotNullOrEmptyString(playlistId, nameof(playlistId));
|
||||
Ensure.ArgumentNotNull(request, nameof(request));
|
||||
|
||||
return API.Get<Paging<PlaylistTrack<IPlaylistItem>>>(URLs.PlaylistTracks(playlistId), request.BuildQueryParams());
|
||||
}
|
||||
|
||||
public Task<FullPlaylist> Create(string userId, PlaylistCreateRequest request)
|
||||
{
|
||||
Ensure.ArgumentNotNullOrEmptyString(userId, nameof(userId));
|
||||
Ensure.ArgumentNotNull(request, nameof(request));
|
||||
|
||||
return API.Post<FullPlaylist>(URLs.UserPlaylists(userId), null, request.BuildBodyParams());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ namespace SpotifyAPI.Web.Http
|
||||
{
|
||||
Ensure.ArgumentNotNull(uri, nameof(uri));
|
||||
|
||||
return SendAPIRequest<T>(uri, HttpMethod.Get, parameters, body);
|
||||
return SendAPIRequest<T>(uri, HttpMethod.Post, parameters, body);
|
||||
}
|
||||
|
||||
public Task<T> Put<T>(Uri uri)
|
||||
|
@ -1,3 +1,4 @@
|
||||
using System.Text;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@ -62,7 +63,7 @@ namespace SpotifyAPI.Web.Http
|
||||
requestMsg.Content = body;
|
||||
break;
|
||||
case string body:
|
||||
requestMsg.Content = new StringContent(body);
|
||||
requestMsg.Content = new StringContent(body, Encoding.UTF8, "application/json");
|
||||
break;
|
||||
case Stream body:
|
||||
requestMsg.Content = new StreamContent(body);
|
||||
|
14
SpotifyAPI.Web/Models/Request/PlaylistAddItemsRequest.cs
Normal file
14
SpotifyAPI.Web/Models/Request/PlaylistAddItemsRequest.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SpotifyAPI.Web
|
||||
{
|
||||
public class PlaylistAddItemsRequest : RequestParams
|
||||
{
|
||||
[BodyParam("uris")]
|
||||
public List<string> Uris { get; set; }
|
||||
|
||||
[BodyParam("position")]
|
||||
public int? Position { get; set; }
|
||||
}
|
||||
}
|
22
SpotifyAPI.Web/Models/Request/PlaylistCreateRequest.cs
Normal file
22
SpotifyAPI.Web/Models/Request/PlaylistCreateRequest.cs
Normal file
@ -0,0 +1,22 @@
|
||||
namespace SpotifyAPI.Web
|
||||
{
|
||||
public class PlaylistCreateRequest : RequestParams
|
||||
{
|
||||
public PlaylistCreateRequest(string name)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
||||
[BodyParam("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[BodyParam("public")]
|
||||
public bool? Public { get; set; }
|
||||
|
||||
[BodyParam("collaborative")]
|
||||
public bool? Collaborative { get; set; }
|
||||
|
||||
[BodyParam("description")]
|
||||
public string Description { get; set; }
|
||||
}
|
||||
}
|
22
SpotifyAPI.Web/Models/Request/PlaylistGetItemsRequest.cs
Normal file
22
SpotifyAPI.Web/Models/Request/PlaylistGetItemsRequest.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SpotifyAPI.Web
|
||||
{
|
||||
public class PlaylistGetItemsRequest : RequestParams
|
||||
{
|
||||
[QueryParam("fields")]
|
||||
public List<string> Fields { get; set; }
|
||||
|
||||
[QueryParam("limit")]
|
||||
public int? Limit { get; set; }
|
||||
|
||||
[QueryParam("offset")]
|
||||
public int? Offset { get; set; }
|
||||
|
||||
[QueryParam("market")]
|
||||
public string Market { get; set; }
|
||||
|
||||
[QueryParam("additional_types")]
|
||||
public List<string> AdditionalTypes { get; set; }
|
||||
}
|
||||
}
|
@ -5,6 +5,11 @@ namespace SpotifyAPI.Web
|
||||
{
|
||||
public class PlaylistRemoveItemsRequest : RequestParams
|
||||
{
|
||||
public PlaylistRemoveItemsRequest(List<Item> tracks)
|
||||
{
|
||||
Tracks = tracks;
|
||||
}
|
||||
|
||||
[BodyParam("tracks")]
|
||||
public List<Item> Tracks { get; set; }
|
||||
[BodyParam("snapshot_id")]
|
||||
|
@ -4,6 +4,10 @@ namespace SpotifyAPI.Web
|
||||
{
|
||||
public class ShowsRequest : RequestParams
|
||||
{
|
||||
public ShowsRequest(List<string> ids)
|
||||
{
|
||||
Ids = ids;
|
||||
}
|
||||
[QueryParam("ids")]
|
||||
public List<string> Ids { get; set; }
|
||||
|
||||
|
19
SpotifyAPI.Web/Models/Response/FullPlaylist.cs
Normal file
19
SpotifyAPI.Web/Models/Response/FullPlaylist.cs
Normal file
@ -0,0 +1,19 @@
|
||||
using System.Collections.Generic;
|
||||
namespace SpotifyAPI.Web
|
||||
{
|
||||
public class FullPlaylist
|
||||
{
|
||||
public bool Collaborative { get; set; }
|
||||
public Dictionary<string, string> ExternalUrls { get; set; }
|
||||
public string Href { get; set; }
|
||||
public string Id { get; set; }
|
||||
public List<Image> Images { get; set; }
|
||||
public string Name { get; set; }
|
||||
public PublicUser Owner { get; set; }
|
||||
public bool Public { get; set; }
|
||||
public string SnapshotId { get; set; }
|
||||
public Paging<PlaylistTrack<IPlaylistItem>> Tracks { get; set; }
|
||||
public string Type { get; set; }
|
||||
public string Uri { get; set; }
|
||||
}
|
||||
}
|
@ -3,12 +3,13 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace SpotifyAPI.Web
|
||||
{
|
||||
public class PlaylistTrack
|
||||
public class PlaylistTrack<T>
|
||||
{
|
||||
public DateTime? AddedAt { get; set; }
|
||||
public PublicUser AddedBy { get; set; }
|
||||
public bool IsLocal { get; set; }
|
||||
|
||||
[JsonConverter(typeof(PlaylistElementConverter))]
|
||||
public IPlaylistItem Track { get; set; }
|
||||
public T Track { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ namespace SpotifyAPI.Web
|
||||
public PublicUser Owner { get; set; }
|
||||
public bool? Public { get; set; }
|
||||
public string SnapshotId { get; set; }
|
||||
public Paging<PlaylistTrack> Tracks { get; set; }
|
||||
public Paging<PlaylistTrack<IPlaylistItem>> Tracks { get; set; }
|
||||
public string Type { get; set; }
|
||||
public string Uri { get; set; }
|
||||
}
|
||||
|
@ -33,6 +33,8 @@ namespace SpotifyAPI.Web
|
||||
|
||||
public static Uri PlaylistTracks(string playlistId) => EUri($"playlists/{playlistId}/tracks");
|
||||
|
||||
public static Uri UserPlaylists(string userId) => EUri($"users/{userId}/playlists");
|
||||
|
||||
private static Uri EUri(FormattableString path) => new Uri(path.ToString(_provider), UriKind.Relative);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user