Beispiel #1
0
        public Task <SoundCloudList <Playlist> > GetAllAsync(PlaylistQueryBuilder builder)
        {
            builder.Path  = PlaylistsPath;
            builder.Paged = true;

            return(GetPage <Playlist>(builder.BuildUri()));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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"));
        }
Beispiel #5
0
        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());
        }
Beispiel #7
0
        public IEnumerable <Playlist> Get(PlaylistQueryBuilder queryBuilder)
        {
            EnsureClientId();

            queryBuilder.Path  = PlaylistsPath;
            queryBuilder.Paged = true;

            return(GetList <Playlist>(queryBuilder.BuildUri()));
        }
Beispiel #8
0
        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()));
        }
Beispiel #9
0
        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"));
        }
Beispiel #12
0
        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));
        }
Beispiel #13
0
        public async Task <Playlist> PostAsync(Playlist playlist)
        {
            playlist.ValidatePost();

            var builder = new PlaylistQueryBuilder {
                Path = PlaylistsPath
            };

            return(await Gateway.SendPostRequestAsync <Playlist>(builder.BuildUri(), playlist));
        }
Beispiel #14
0
        public async Task <Playlist> GetAsync(int playlistId)
        {
            EnsureClientId();

            var builder = new PlaylistQueryBuilder();

            builder.Path = string.Format(PlaylistPath, playlistId);

            return(await GetByIdAsync <Playlist>(builder.BuildUri()));
        }
Beispiel #15
0
        public Playlist Get(int playlistId)
        {
            EnsureClientId();

            var builder = new PlaylistQueryBuilder();

            builder.Path = string.Format(PlaylistPath, playlistId);

            return(GetById <Playlist>(builder.BuildUri()));
        }
Beispiel #16
0
        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()));
        }
Beispiel #17
0
        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()));
        }
Beispiel #18
0
        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));
        }
Beispiel #19
0
        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));
        }
Beispiel #20
0
        public IWebResult <Playlist> Post(Playlist playlist)
        {
            EnsureToken();
            Validate(playlist.ValidatePost);

            var builder = new PlaylistQueryBuilder();

            builder.Path = PlaylistsPath;

            return(Create <Playlist>(builder.BuildUri(), playlist));
        }
Beispiel #21
0
        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));
        }
Beispiel #23
0
        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));
        }
Beispiel #24
0
        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));
        }
Beispiel #25
0
        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));
            }
        }
Beispiel #26
0
        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));
        }