コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }