Esempio n. 1
0
        public async Task <IEnumerable <T> > MakePagedRequest <T>(HttpRequestMessage requestMessage, bool getAllPages)
        {
            List <T> results = new List <T>();
            string   content = await MakeRequest(requestMessage);

            DuoResponse <T> response = JsonConvert.DeserializeObject <DuoResponse <T> >(content);

            results.Add(response.Content);

            if (requestMessage.Method == HttpMethod.Get && getAllPages && response.Metadata?.NextOffset > 0)
            {
                string parameters = requestMessage.RequestUri.Query
                                    .Replace("?", string.Empty)
                                    .Split('&')
                                    .Where(x => !x.StartsWith("offset=", StringComparison.OrdinalIgnoreCase))
                                    .Prepend($"offset={response.Metadata.NextOffset}")
                                    .Aggregate((a, b) => $"{a}&{b}");
                string url = $"{requestMessage.RequestUri.Scheme}://{requestMessage.RequestUri.Host}{requestMessage.RequestUri.AbsolutePath}?{parameters}";

                using (requestMessage = new HttpRequestMessage(requestMessage.Method, url))
                {
                    requestMessage.Content = requestMessage.Content;
                    results.AddRange(await MakePagedRequest <T>(requestMessage, getAllPages));
                }
            }
            return(results);
        }
Esempio n. 2
0
        public async Task <T> MakeRequest <T>(HttpRequestMessage requestMessage)
        {
            string content = await MakeRequest(requestMessage);

            DuoResponse <T> response = JsonConvert.DeserializeObject <DuoResponse <T> >(content);

            return(response.Content);
        }