Added FeaturedPlaylists

This commit is contained in:
Jonas Dellinger 2020-05-02 14:58:11 +02:00
parent 8074ff6331
commit 2b5a826181
8 changed files with 51 additions and 7 deletions

View File

@ -11,11 +11,8 @@ namespace SpotifyAPI.Web
[Test] [Test]
public async Task TestingYo() public async Task TestingYo()
{ {
var config = SpotifyClientConfig.CreateDefault("BQAODnY4uqYj_KCddlDm10KLPDZSpZhVUtMDjdh1zfG-xd5pAV3htRjnaGfO7ob92HHzNP05a-4mDnts337gdnZlRtjrDPnuWNFx75diY540H0cD1bS9UzI5cfO27N2O6lmzKb_jAYTaRoqPKHoG93KGiXxwg4vblGKSBY1vIloP"); var config = SpotifyClientConfig.CreateDefault("");
var spotify = new SpotifyClient(config); var spotify = new SpotifyClient(config);
var playlists = await spotify.Browse.GetCategoryPlaylists("toplists", new CategoriesPlaylistsRequest() { Offset = 1 });
Console.WriteLine(playlists.Playlists.Items[0].Name);
} }
} }
} }

View File

@ -75,5 +75,17 @@ namespace SpotifyAPI.Web
return API.Get<NewReleasesResponse>(URLs.NewReleases(), request.BuildQueryParams()); return API.Get<NewReleasesResponse>(URLs.NewReleases(), request.BuildQueryParams());
} }
public Task<FeaturedPlaylistsResponse> GetFeaturedPlaylists()
{
return API.Get<FeaturedPlaylistsResponse>(URLs.FeaturedPlaylists());
}
public Task<FeaturedPlaylistsResponse> GetFeaturedPlaylists(FeaturedPlaylistsRequest request)
{
Ensure.ArgumentNotNull(request, nameof(request));
return API.Get<FeaturedPlaylistsResponse>(URLs.FeaturedPlaylists(), request.BuildQueryParams());
}
} }
} }

View File

@ -18,5 +18,8 @@ namespace SpotifyAPI.Web
Task<NewReleasesResponse> GetNewReleases(); Task<NewReleasesResponse> GetNewReleases();
Task<NewReleasesResponse> GetNewReleases(NewReleasesRequest request); Task<NewReleasesResponse> GetNewReleases(NewReleasesRequest request);
Task<FeaturedPlaylistsResponse> GetFeaturedPlaylists();
Task<FeaturedPlaylistsResponse> GetFeaturedPlaylists(FeaturedPlaylistsRequest request);
} }
} }

View File

@ -0,0 +1,22 @@
using System;
namespace SpotifyAPI.Web
{
public class FeaturedPlaylistsRequest : RequestParams
{
[QueryParam("country")]
public string Country { get; set; }
[QueryParam("locale")]
public string Locale { get; set; }
[QueryParam("limit")]
public int? Limit { get; set; }
[QueryParam("offset")]
public int? Offset { get; set; }
public DateTime? Timestamp { get; set; }
[QueryParam("timestamp")]
protected string _Timestamp
{
get => Timestamp?.ToString("o");
}
}
}

View File

@ -11,7 +11,7 @@ namespace SpotifyAPI.Web
// Make sure everything is okay before building query params // Make sure everything is okay before building query params
Ensure(); Ensure();
var queryProps = GetType().GetProperties() var queryProps = GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public)
.Where(prop => prop.GetCustomAttributes(typeof(QueryParamAttribute), true).Length > 0); .Where(prop => prop.GetCustomAttributes(typeof(QueryParamAttribute), true).Length > 0);
var queryParams = new Dictionary<string, string>(); var queryParams = new Dictionary<string, string>();
@ -36,7 +36,7 @@ namespace SpotifyAPI.Web
public class QueryParamAttribute : Attribute public class QueryParamAttribute : Attribute
{ {
public string Key { get; set; } public string Key { get; }
public QueryParamAttribute() { } public QueryParamAttribute() { }
public QueryParamAttribute(string key) public QueryParamAttribute(string key)

View File

@ -0,0 +1,8 @@
namespace SpotifyAPI.Web
{
public class FeaturedPlaylistsResponse
{
public string Message { get; set; }
public Paging<SimplePlaylist> Playlists { get; set; }
}
}

View File

@ -23,6 +23,8 @@ namespace SpotifyAPI.Web
public static Uri NewReleases() => EUri($"browse/new-releases"); public static Uri NewReleases() => EUri($"browse/new-releases");
public static Uri FeaturedPlaylists() => EUri($"browse/featured-playlists");
private static Uri EUri(FormattableString path) => new Uri(path.ToString(_provider), UriKind.Relative); private static Uri EUri(FormattableString path) => new Uri(path.ToString(_provider), UriKind.Relative);
} }
} }

View File

@ -28,7 +28,7 @@ namespace SpotifyAPI.Web
newParameters.Add(parameter.Key, HttpUtility.UrlEncode(parameter.Value)); newParameters.Add(parameter.Key, HttpUtility.UrlEncode(parameter.Value));
} }
var queryString = String.Join("&", newParameters.Select((parameter) => $"{parameter.Key}={parameter.Value}")); var queryString = string.Join("&", newParameters.Select((parameter) => $"{parameter.Key}={parameter.Value}"));
var query = string.IsNullOrEmpty(queryString) ? null : $"?{queryString}"; var query = string.IsNullOrEmpty(queryString) ? null : $"?{queryString}";
var uriBuilder = new UriBuilder(uri) var uriBuilder = new UriBuilder(uri)