private IObservable <T> GenerateFromPaginable <T, TRes>(Func <IRestRequest> requestBuilder, int?max = null) where T : DiscogsEntity where TRes : DiscogsPaginableResults <T> { var paginable = new DiscogsPaginable() { per_page = (max > 0) ? Math.Min(50, max.Value) : new int?(), page = 1 }; return(Observable.Create <T>(async(observer, cancel) => { DiscogsPaginedResult pagination; do { cancel.ThrowIfCancellationRequested(); var request = requestBuilder().AddAsParameter(paginable); paginable.page++; var res = await _Client.Execute <TRes>(request, cancel); var elements = res?.GetResults(); if (elements == null) { return; } foreach (var result in elements) { cancel.ThrowIfCancellationRequested(); observer.OnNext(result); } pagination = res.pagination; }while (pagination.page != pagination.pages); })); }
private async Task <T> GetPaginableAsync <T>(Func <IRestRequest> requestBuilder, DiscogsPaginable paginable, CancellationToken token) { paginable = paginable ?? new DiscogsPaginable() { per_page = 50, page = 1 }; var request = requestBuilder().AddAsParameter(paginable); return(await _Client.Execute <T>(request, token)); }
public Task <DiscogsLabelReleases> GetAllLabelReleasesAsync(int labelId, DiscogsPaginable paginable, CancellationToken token) { IRestRequest RequestBuilder() => _Client.GetAllLabelReleasesRequest(labelId); return(GetPaginableAsync <DiscogsLabelReleases>(RequestBuilder, paginable, token)); }
public Task <DiscogsLabelReleases> GetAllLabelReleasesAsync(int labelId, DiscogsPaginable paginable = null) { return(GetAllLabelReleasesAsync(labelId, paginable, CancellationToken.None)); }
public Task <DiscogsArtistReleases> GetArtistReleaseAsync(int artistId, DiscogsSortInformation sort, DiscogsPaginable paginable, CancellationToken token) { IRestRequest RequestBuilder() => _Client.GetArtistReleaseVersionRequest(artistId).AddAsParameter(sort); return(GetPaginableAsync <DiscogsArtistReleases>(RequestBuilder, paginable, token)); }
public Task <DiscogsArtistReleases> GetArtistReleaseAsync(int artistId, DiscogsSortInformation sort = null, DiscogsPaginable paginable = null) { return(GetArtistReleaseAsync(artistId, sort, paginable, CancellationToken.None)); }
public Task <DiscogsReleaseVersions> GetMasterReleaseVersionsAsync(int masterId, DiscogsPaginable paginable, CancellationToken token) { IRestRequest RequestBuilder() => _Client.GetMasterReleaseVersionRequest(masterId); return(GetPaginableAsync <DiscogsReleaseVersions>(RequestBuilder, paginable, token)); }
public Task <DiscogsReleaseVersions> GetMasterReleaseVersionsAsync(int masterId, DiscogsPaginable paginable = null) { return(GetMasterReleaseVersionsAsync(masterId, paginable, CancellationToken.None)); }
public Task <DiscogsSearchResults> SearchAsync(DiscogsSearch search, DiscogsPaginable paginable, CancellationToken token) { IRestRequest RequestBuilder() => _Client.GetSearchRequest().AddAsParameter(search); return(GetPaginableAsync <DiscogsSearchResults>(RequestBuilder, paginable, token)); }
public Task <DiscogsSearchResults> SearchAsync(DiscogsSearch search, DiscogsPaginable paginable = null) { return(SearchAsync(search, paginable, CancellationToken.None)); }
public Task <DiscogsInstanceNotes> GetCollectionNotesByFolderAndReleaseAsync(string username, int folderID, int releaseID, int instanceID, DiscogsPaginable paginable = null) { return(GetCollectionNotesByFolderAndReleaseAsync(username, folderID, releaseID, instanceID, paginable, CancellationToken.None)); }
public Task <DiscogsInstanceNotes> GetCollectionNotesByFolderAndReleaseAsync(string username, int folderID, int releaseID, int instanceID, DiscogsPaginable paginable, CancellationToken token) { IRestRequest RequestBuilder() => _Client.GetCollectionNotesByFolderAndReleaseRequest(username, folderID, releaseID, instanceID); return(GetPaginableAsync <DiscogsInstanceNotes>(RequestBuilder, paginable, token)); }
public Task <DiscogsFolderReleases> GetCollectionReleasesByFolderAsync(string username, int folderID, DiscogsPaginable paginable = null) { return(GetCollectionReleasesByFolderAsync(username, folderID, paginable, CancellationToken.None)); }
public Task <DiscogsCollectionFolders> GetCollectionFoldersAsync(string username, DiscogsPaginable paginable = null) { return(GetCollectionFoldersAsync(username, paginable, CancellationToken.None)); }
public Task <DiscogsCollectionFolders> GetCollectionFoldersAsync(string username, DiscogsPaginable paginable, CancellationToken token) { IRestRequest RequestBuilder() => _Client.GetCollectionFoldersRequest(username); return(GetPaginableAsync <DiscogsCollectionFolders>(RequestBuilder, paginable, token)); }