Skip to content

Commit

Permalink
feat: implements markets API (#787)
Browse files Browse the repository at this point in the history
* feat: implements markets API

* fix: use correct constructor name
  • Loading branch information
esskar authored Aug 11, 2022
1 parent 7acffd9 commit d363789
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 0 deletions.
19 changes: 19 additions & 0 deletions SpotifyAPI.Web/Clients/Interfaces/IMarketsClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System.Threading.Tasks;

namespace SpotifyAPI.Web
{
/// <summary>
/// Markets Endpoints
/// </summary>
public interface IMarketsClient
{
/// <summary>
/// Get the list of markets where Spotify is available.
/// </summary>
/// <remarks>
/// https://developer.spotify.com/documentation/web-api/reference/#/operations/get-available-markets
/// </remarks>
/// <returns></returns>
Task<AvailableMarketsResponse> AvailableMarkets();
}
}
16 changes: 16 additions & 0 deletions SpotifyAPI.Web/Clients/MarketsClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System.Threading.Tasks;
using SpotifyAPI.Web.Http;
using URLs = SpotifyAPI.Web.SpotifyUrls;

namespace SpotifyAPI.Web
{
public class MarketsClient : APIClient, IMarketsClient
{
public MarketsClient(IAPIConnector apiConnector) : base(apiConnector) { }

public Task<AvailableMarketsResponse> AvailableMarkets()
{
return API.Get<AvailableMarketsResponse>(URLs.Markets());
}
}
}
3 changes: 3 additions & 0 deletions SpotifyAPI.Web/Clients/SpotifyClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public SpotifyClient(SpotifyClientConfig config)
Personalization = new PersonalizationClient(_apiConnector);
Episodes = new EpisodesClient(_apiConnector);
Library = new LibraryClient(_apiConnector);
Markets = new MarketsClient(_apiConnector);
}

public IPaginator DefaultPaginator { get; }
Expand Down Expand Up @@ -79,6 +80,8 @@ public SpotifyClient(SpotifyClientConfig config)

public ILibraryClient Library { get; }

public IMarketsClient Markets { get; }

public IResponse? LastResponse { get; private set; }

/// <summary>
Expand Down
10 changes: 10 additions & 0 deletions SpotifyAPI.Web/Models/Response/AvailableMarketsResponse.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System.Collections.Generic;

namespace SpotifyAPI.Web
{
public class AvailableMarketsResponse
{
public List<string> Markets { get; set; } = default!;
}
}

2 changes: 2 additions & 0 deletions SpotifyAPI.Web/SpotifyUrls.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ public static class SpotifyUrls

public static Uri LibraryEpisodesContains() => EUri($"me/episodes/contains");

public static Uri Markets() => EUri($"markets");

private static Uri EUri(FormattableString path) => new(path.ToString(_provider), UriKind.Relative);
}
}

0 comments on commit d363789

Please # to comment.