public Task <SoundCloudList <Playlist> > GetAllAsync(PlaylistQueryBuilder builder) { builder.Path = PlaylistsPath; builder.Paged = true; return(GetPage <Playlist>(builder.BuildUri())); }
public void Test_Playlists_GetList() { const string expectedUri = @"https://api.soundcloud.com/playlists?limit=10&q=search&representation=compact&linked_partitioning=1&client_id=myClientId"; var playlists = new PagedResult <Playlist>(); playlists.collection = new List <Playlist> { new Playlist(), new Playlist() }; var response = new ApiResponse <PagedResult <Playlist> >(HttpStatusCode.OK, "OK"); response.Data = playlists; var requestMock = new Mock <ISoundCloudApiGateway>(MockBehavior.Strict); requestMock.Setup(x => x.InvokeGetRequest <PagedResult <Playlist> >(It.Is <Uri>(y => y.ToString() == expectedUri))).Returns(response); var playlistEndpoint = new Playlists(requestMock.Object); playlistEndpoint.Credentials.ClientId = ClientId; var builder = new PlaylistQueryBuilder("search"); builder.Representation = RepresentationMode.Compact; var result = playlistEndpoint.Get(builder).ToList(); Assert.That(result, Is.EqualTo(playlists.collection)); }
public async Task <Playlist> GetAsync(long playlistId) { var builder = new PlaylistQueryBuilder { Path = string.Format(PlaylistPath, playlistId) }; return(await Gateway.SendGetRequestAsync <Playlist>(builder.BuildUri())); }
public void Test_SearchString() { var builder = new PlaylistQueryBuilder("SearchString"); var query = builder.BuildUri(); Assert.That(query.ToString(), Is.EqualTo("https://api.soundcloud.com/?q=SearchString")); }
public async Task <IEnumerable <Playlist> > GetAsync(PlaylistQueryBuilder queryBuilder) { EnsureClientId(); queryBuilder.Path = PlaylistsPath; queryBuilder.Paged = true; return(await GetListAsync <Playlist>(queryBuilder.BuildUri())); }
public void Test_Paged_Empty_SearchString() { var builder = new PlaylistQueryBuilder("SearchString"); builder.Paged = true; builder.SearchString = string.Empty; Assert.Throws <ArgumentException>(() => builder.BuildUri()); }
public IEnumerable <Playlist> Get(PlaylistQueryBuilder queryBuilder) { EnsureClientId(); queryBuilder.Path = PlaylistsPath; queryBuilder.Paged = true; return(GetList <Playlist>(queryBuilder.BuildUri())); }
public async Task <SecretToken> GetSecretTokenAsync(Playlist playlist) { playlist.ValidateGet(); var builder = new PlaylistQueryBuilder { Path = string.Format(PlaylistSecretTokenPath, playlist.Id) }; return(await Gateway.SendGetRequestAsync <SecretToken>(builder.BuildUri())); }
public async Task <StatusResponse> DeleteAsync(Playlist playlist) { playlist.ValidateDelete(); var builder = new PlaylistQueryBuilder { Path = string.Format(PlaylistPath, playlist.Id) }; return(await Gateway.SendDeleteRequestAsync <StatusResponse>(builder.BuildUri())); }
public void Test_RepresentationMode() { var builder = new PlaylistQueryBuilder { Representation = RepresentationMode.Compact }; var query = builder.BuildUri(); Assert.That(query.ToString(), Is.EqualTo("https://api.soundcloud.com/?representation=compact")); }
public void Test_Paged() { var builder = new PlaylistQueryBuilder { SearchString = "SearchString", Paged = true }; var query = builder.BuildUri(); Assert.That(query.ToString(), Is.EqualTo("https://api.soundcloud.com/?limit=50&q=SearchString&linked_partitioning=1")); }
public async Task <Playlist> UpdateAsync(Playlist playlist) { playlist.ValidateGet(); var builder = new PlaylistQueryBuilder { Path = string.Format(PlaylistPath, playlist.Id) }; return(await Gateway.SendPutRequestAsync <Playlist>(builder.BuildUri(), playlist)); }
public async Task <Playlist> PostAsync(Playlist playlist) { playlist.ValidatePost(); var builder = new PlaylistQueryBuilder { Path = PlaylistsPath }; return(await Gateway.SendPostRequestAsync <Playlist>(builder.BuildUri(), playlist)); }
public async Task <Playlist> GetAsync(int playlistId) { EnsureClientId(); var builder = new PlaylistQueryBuilder(); builder.Path = string.Format(PlaylistPath, playlistId); return(await GetByIdAsync <Playlist>(builder.BuildUri())); }
public Playlist Get(int playlistId) { EnsureClientId(); var builder = new PlaylistQueryBuilder(); builder.Path = string.Format(PlaylistPath, playlistId); return(GetById <Playlist>(builder.BuildUri())); }
public async Task <IWebResult> DeleteAsync(Playlist playlist) { EnsureToken(); Validate(playlist.ValidateDelete); var builder = new PlaylistQueryBuilder(); builder.Path = string.Format(PlaylistPath, playlist.id); return(await DeleteAsync(builder.BuildUri())); }
public SecretToken GetSecretToken(Playlist playlist) { EnsureToken(); Validate(playlist.ValidateGet); var builder = new PlaylistQueryBuilder(); builder.Path = string.Format(PlaylistSecretTokenPath, playlist.id); return(GetById <SecretToken>(builder.BuildUri())); }
public async Task <IWebResult <Playlist> > UpdateAsync(Playlist playlist) { EnsureToken(); Validate(playlist.ValidateGet); var builder = new PlaylistQueryBuilder(); builder.Path = string.Format(PlaylistPath, playlist.id); return(await UpdateAsync <Playlist>(builder.BuildUri(), playlist)); }
public async Task <IWebResult <Playlist> > PostAsync(Playlist playlist) { EnsureToken(); Validate(playlist.ValidatePost); var builder = new PlaylistQueryBuilder(); builder.Path = PlaylistsPath; return(await CreateAsync <Playlist>(builder.BuildUri(), playlist)); }
public IWebResult <Playlist> Post(Playlist playlist) { EnsureToken(); Validate(playlist.ValidatePost); var builder = new PlaylistQueryBuilder(); builder.Path = PlaylistsPath; return(Create <Playlist>(builder.BuildUri(), playlist)); }
public async Task <SecretToken> GetSecretTokenAsync(Playlist playlist) { EnsureToken(); Validate(playlist.ValidateGet); var builder = new PlaylistQueryBuilder(); builder.Path = string.Format(PlaylistSecretTokenPath, playlist.id); return(await GetByIdAsync <SecretToken>(builder.BuildUri())); }
public void Test_Playlists_GetList() { var client = SoundCloudClient.CreateUnauthorized(_settings.ClientId); var builder = new PlaylistQueryBuilder("diplo"); builder.Representation = RepresentationMode.Compact; var playlist = client.Playlists.Get(builder).Take(10).ToList(); Assert.That(playlist.Count, Is.EqualTo(10)); }
public async Task <Playlist> UploadArtworkAsync(Playlist playlist, Stream file) { playlist.ValidateUploadArtwork(); var parameters = new Dictionary <string, object> { { PlaylistArtworkDataKey, file } }; var builder = new PlaylistQueryBuilder { Path = string.Format(PlaylistPath, playlist.Id) }; return(await Gateway.SendPutRequestAsync <Playlist>(builder.BuildUri(), parameters)); }
public async Task <IWebResult <Playlist> > UploadArtworkAsync(Playlist playlist, Stream file) { EnsureToken(); Validate(playlist.ValidateUploadArtwork); var parameters = new Dictionary <string, object>(); parameters.Add(PlaylistArtworkDataKey, file); var builder = new PlaylistQueryBuilder(); builder.Path = string.Format(PlaylistPath, playlist.id); return(await UpdateAsync <Playlist>(builder.BuildUri(), parameters)); }
public async Task Playlists_GetList() { var client = SoundCloudClient.CreateUnauthorized(Settings.ClientId); var builder = new PlaylistQueryBuilder { SearchString = "diplo", Representation = RepresentationMode.Compact, Limit = 10 }; var result = await client.Playlists.GetAllAsync(builder); Assert.That(result.Any(), Is.True); if (result.HasNextPage) { var nextResult = await result.GetNextPageAsync(); Assert.That(nextResult.Any(), Is.True); Assert.That(result.First().Id, Is.Not.EqualTo(nextResult.First().Id)); } }
public async Task GetListWithBuilder() { var expectedUri = new Uri("https://api.soundcloud.com/playlists?limit=50&q=search&representation=compact&linked_partitioning=1"); var requestMock = new Mock <ISoundCloudApiGateway>(MockBehavior.Strict); var playlists = new PagedResult <Playlist> { Collection = new List <Playlist> { new Playlist(), new Playlist() } }; requestMock.Setup(x => x.SendGetRequestAsync <PagedResult <Playlist> >(expectedUri)).ReturnsAsync(playlists); // Act var builder = new PlaylistQueryBuilder { SearchString = "search", Representation = RepresentationMode.Compact }; var result = (await new Playlists(requestMock.Object).GetAllAsync(builder)).ToList(); // Assert Assert.That(result, Is.EquivalentTo(playlists.Collection)); }