internal virtual async Task <IEnumerable <T> > GetAllPages <T>(AccuRankerQueryBuilder baseQuery, int pageSize = 500) { var offset = 0; var allObjects = new List <T>(); ApiResponse <AccuRankerPageResponse <T> > response; do { var endpoint = baseQuery .WithLimit(pageSize) .WithOffset(offset) .Build(); response = await HttpClient.GetApiResponse <AccuRankerPageResponse <T> >(endpoint); if (response == null || !response.HasValue) { throw new ApiException(response?.Error); } var objects = response.Value.Results; allObjects.AddRange(objects); offset += pageSize; } while (!string.IsNullOrEmpty(response.Value.NextPage)); return(allObjects); }
public virtual async Task <IEnumerable <Domain> > GetDomains(IEnumerable <Field> fields, int pageSize = 1000) { await AuthorizeClient(AuthValues); var endpoint = new AccuRankerQueryBuilder("domains/") .WithFields(fields); var domains = await GetAllPages <Domain>(endpoint, pageSize); return(domains); }
public async Task <IEnumerable <Account> > GetAccounts(IEnumerable <Field> fields, int pageSize = 1000) { await AuthorizeClient(AuthValues); var endpoint = new AccuRankerQueryBuilder("accounts/") .WithFields(fields); var accounts = await GetAllPages <Account>(endpoint, pageSize); return(accounts); }
public async Task <Account> GetAccount(int id) { await AuthorizeClient(AuthValues); var endpoint = new AccuRankerQueryBuilder($"accounts/{id}/") .Build(); var groups = await HttpClient.GetApiResponse <Account>(endpoint); if (groups != null && groups.HasValue) { return(groups.Value); } throw new ApiException(groups?.Error); }
public virtual async Task <IEnumerable <Keyword> > GetKeywords( long domainId, DateTime from, DateTime to, IEnumerable <Field> fields, int pageSize = 1000) { await AuthorizeClient(AuthValues); var endpoint = new AccuRankerQueryBuilder($"domains/{domainId}/keywords/") .WithFields(fields) .WithDateRange(from, to); var keywords = await GetAllPages <Keyword>(endpoint, pageSize); return(keywords); }
public async Task <Domain> GetDomain(long id, IEnumerable <Field> fields) { await AuthorizeClient(AuthValues); var endpoint = new AccuRankerQueryBuilder($"domains/{id}/") .WithFields(fields) .Build(); var domain = await HttpClient.GetApiResponse <Domain>(endpoint); if (domain != null && domain.HasValue) { return(domain.Value); } throw new ApiException(domain?.Error); }