public void IsPaginated_NullMetadata_ExpectFalse()
        {
            ClientResponseBody <string> responseBody = new ClientResponseBody <string>()
            {
                Metadata = null
            };

            bool isPaginated = responseBody.IsPaginated();

            Assert.IsFalse(isPaginated);
        }
        public void IsPaginated_WithPaginationData_ExpectTrue()
        {
            ClientResponseBody <string> responseBody = new ClientResponseBody <string>()
            {
                Metadata = new ClientResponseMetadata()
                {
                    Pagination = new ClientResponseMetadataPagination()
                }
            };

            bool isPaginated = responseBody.IsPaginated();

            Assert.IsTrue(isPaginated);
        }
        /// <summary>
        /// Invokes a service request asyncronously
        /// </summary>
        /// <param name="request">Instance of ClientRequest object</param>
        public async Task <ClientResponse <T> > InvokeAsync <T>(ClientRequest request)
        {
            HttpRequestMessage requestMessage = GetRequestMessage(request);

            if (request.Method != ClientRequestMethod.GET && request.Body != null)
            {
                string        jsonContent   = Newtonsoft.Json.JsonConvert.SerializeObject(request.Body);
                StringContent stringContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
                requestMessage.Content = stringContent;
            }

            HttpResponseMessage response = await this.Client.SendAsync(requestMessage);

            string responseBody = await response.Content.ReadAsStringAsync();

            ClientResponseBody <T> body = null;

            try
            {
                body = Newtonsoft.Json.JsonConvert.DeserializeObject <ClientResponseBody <T> >(responseBody, new Newtonsoft.Json.JsonSerializerSettings()
                {
                    NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore
                });
            }
            catch
            {
                throw new Exception.UKFastClientRequestException((int)response.StatusCode, responseBody);
            }

            return(new ClientResponse <T>()
            {
                StatusCode = (int)response.StatusCode,
                Body = body,
                Headers = response.Headers.ToDictionary(x => x.Key, x => x.Value)
            });
        }