public void Test_Groups_GetList_Query()
        {
            const string expectedUri = @"https://api.soundcloud.com/groups?limit=50&q=group&linked_partitioning=1&client_id=myClientId";

            var groups = new PagedResult <Group>();

            groups.collection = new List <Group> {
                new Group()
            };

            var response = new ApiResponse <PagedResult <Group> >(HttpStatusCode.OK, "OK");

            response.Data = groups;

            var gatewayMock = new Mock <ISoundCloudApiGateway>(MockBehavior.Strict);

            gatewayMock.Setup(x => x.InvokeGetRequest <PagedResult <Group> >(It.Is <Uri>(y => y.ToString() == expectedUri))).Returns(response);

            var groupsEndpoint = new Groups(gatewayMock.Object);

            groupsEndpoint.Credentials.ClientId = ClientId;

            var builder = new GroupQueryBuilder();

            builder.SearchString = "group";

            var result = groupsEndpoint.Get(builder);

            Assert.That(result, Is.EqualTo(groups.collection));
        }
        public void Test_No_Parameters()
        {
            var builder = new GroupQueryBuilder();

            var query = builder.BuildUri();

            Assert.That(query.ToString(), Is.EqualTo("https://api.soundcloud.com/?"));
        }
Beispiel #3
0
        public IEnumerable <Group> Get(GroupQueryBuilder queryBuilder)
        {
            EnsureClientId();

            queryBuilder.Path  = GroupsPath;
            queryBuilder.Paged = true;

            return(GetList <Group>(queryBuilder.BuildUri()));
        }
Beispiel #4
0
        public async Task <IEnumerable <Group> > GetAsync(GroupQueryBuilder queryBuilder)
        {
            EnsureClientId();

            queryBuilder.Path  = GroupsPath;
            queryBuilder.Paged = true;

            return(await GetListAsync <Group>(queryBuilder.BuildUri()));
        }
        public void Test_Paged()
        {
            var builder = new GroupQueryBuilder();

            builder.Paged = true;

            var query = builder.BuildUri();

            Assert.That(query.ToString(), Is.EqualTo("https://api.soundcloud.com/?limit=50&linked_partitioning=1"));
        }
        public void Test_SearchString()
        {
            var builder = new GroupQueryBuilder();

            builder.SearchString = "SearchString";

            var query = builder.BuildUri();

            Assert.That(query.ToString(), Is.EqualTo("https://api.soundcloud.com/?q=SearchString"));
        }
Beispiel #7
0
        public Group Get(int groupId)
        {
            EnsureClientId();

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupPath, groupId);

            return(GetById <Group>(builder.BuildUri()));
        }
Beispiel #8
0
        public async Task <Group> GetAsync(int groupId)
        {
            EnsureClientId();

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupPath, groupId);

            return(await GetByIdAsync <Group>(builder.BuildUri()));
        }
Beispiel #9
0
        public IWebResult <Group> Post(Group group)
        {
            EnsureToken();
            Validate(group.ValidatePost);

            var builder = new GroupQueryBuilder();

            builder.Path = GroupsPath;

            return(Create <Group>(builder.BuildUri(), group));
        }
Beispiel #10
0
        public async Task <IWebResult> DeletePendingTrackAsync(Group group, Track track)
        {
            EnsureToken();
            Validate(track.ValidateDelete);

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupPendingTrackPath, group.id, track.id);

            return(await DeleteAsync(builder.BuildUri()));
        }
Beispiel #11
0
        public async Task <IWebResult <Group> > PostAsync(Group group)
        {
            EnsureToken();
            Validate(group.ValidatePost);

            var builder = new GroupQueryBuilder();

            builder.Path = GroupsPath;

            return(await CreateAsync <Group>(builder.BuildUri(), group));
        }
Beispiel #12
0
        public async Task <IWebResult <Group> > UpdateAsync(Group group)
        {
            EnsureToken();
            Validate(group.ValidateUpdate);

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupPath, group.id);

            return(await UpdateAsync <Group>(builder.BuildUri(), group));
        }
Beispiel #13
0
        public IWebResult DeleteContribution(Group group, Track track)
        {
            EnsureToken();
            Validate(track.ValidateDelete);

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupContributionPath, group.id, track.id);

            return(Delete(builder.BuildUri()));
        }
Beispiel #14
0
        public IWebResult <Group> Update(Group group)
        {
            EnsureToken();
            Validate(group.ValidateUpdate);

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupPath, group.id);

            return(Update <Group>(builder.BuildUri(), group));
        }
Beispiel #15
0
        public IEnumerable <Track> GetContributions(Group group)
        {
            EnsureToken();
            Validate(group.ValidateGet);

            var builder = new GroupQueryBuilder();

            builder.Path  = string.Format(GroupContributionsPath, group.id);
            builder.Paged = true;

            return(GetList <Track>(builder.BuildUri()));
        }
Beispiel #16
0
        public async Task <IEnumerable <Track> > GetPendingTracksAsync(Group group)
        {
            EnsureToken();
            Validate(group.ValidateGet);

            var builder = new GroupQueryBuilder();

            builder.Path  = string.Format(GroupPendingTracksPath, group.id);
            builder.Paged = true;

            return(await GetListAsync <Track>(builder.BuildUri()));
        }
Beispiel #17
0
        public IEnumerable <Track> GetTracks(Group group)
        {
            EnsureClientId();
            Validate(group.ValidateGet);

            var builder = new GroupQueryBuilder();

            builder.Path  = string.Format(GroupTracksPath, group.id);
            builder.Paged = true;

            return(GetList <Track>(builder.BuildUri()));
        }
Beispiel #18
0
        public async Task <IEnumerable <User> > GetUsersAsync(Group group)
        {
            EnsureClientId();
            Validate(group.ValidateGet);

            var builder = new GroupQueryBuilder();

            builder.Path  = string.Format(GroupUsersPath, group.id);
            builder.Paged = true;

            return(await GetListAsync <User>(builder.BuildUri()));
        }
Beispiel #19
0
        public async Task <IWebResult <Group> > UploadArtworkAsync(Group group, Stream file)
        {
            EnsureToken();
            Validate(group.ValidateUploadArtwork);

            var param = new Dictionary <string, object>();

            param.Add(GroupArtworkDataKey, file);

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupPath, group.id);

            return(await UpdateAsync <Group>(builder.BuildUri(), param));
        }
Beispiel #20
0
        public async Task <IWebResult <Track> > PostAsync(Group group, Track track)
        {
            EnsureToken();
            Validate(track.ValidateDelete);

            var param = new Dictionary <string, object>();

            param.Add("track[id]", track.id);

            var builder = new GroupQueryBuilder();

            builder.Path = string.Format(GroupContributionsPath, group.id);

            return(await CreateAsync <Track>(builder.BuildUri(), param));
        }