Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
feat: implements markets API
  • Loading branch information
esskar authored Aug 10, 2022
commit 5de631e58ae300b19361f106946dd785113d0d39
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 SearchClient(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);
}
}