public async Task <Client> SaveClientWithWaitAndRetryPolicyAsync(Client obj)
        {
            var stringContent = JsonConvert.SerializeObject(obj);
            var request       = new ApiRequest
            {
                RequestUri        = WebAPIRoutes.RegisterClient,
                Verb              = HttpConstants.Verb.Post,
                JsonStringContent = stringContent
            };
            var response = await _httpClientResilientClient.DoCallAsyncWithWaitAndRetryPolicy(request);

            var result = HttpClientExtensions.GetResponse <Client>(response.ResponseContent);

            return(result);
        }
        public async Task <IEnumerable <TEntity> > GetAllAsync(string route)
        {
            try
            {
                var request = new ApiRequest
                {
                    RequestUri = route,
                    Verb       = HttpConstants.Verb.Get
                };
                var response = await _httpClientResilientClient.DoCallAsyncWithWaitAndRetryPolicy(request).ConfigureAwait(false);

                var result = HttpClientExtensions.GetResponse <IEnumerable <TEntity> >(response.ResponseContent);
                return(result);
            }
            catch (Exception exception)
            {
                throw new HttpRequestException(exception.Message);
            }
        }
        public async Task <TEntity> FindByIdAsync(string route, string primaryKey)
        {
            try
            {
                var completeRoute = $"{route}/{primaryKey}";
                var request       = new ApiRequest
                {
                    RequestUri = completeRoute,
                    Verb       = HttpConstants.Verb.Get
                };
                var response = await _httpClientResilientClient.DoCallAsyncWithWaitAndRetryPolicy(request).ConfigureAwait(false);

                var result = HttpClientExtensions.GetResponse <TEntity>(response.ResponseContent);
                return(result);
            }
            catch (Exception exception)
            {
                throw new HttpRequestException(exception.Message);
            }
        }
        public async Task <TEntity> UpdateAsync(string route, TEntity obj)
        {
            try
            {
                var stringContent = JsonConvert.SerializeObject(obj);
                var request       = new ApiRequest
                {
                    RequestUri        = route,
                    Verb              = HttpConstants.Verb.Put,
                    JsonStringContent = stringContent
                };
                var response = await _httpClientResilientClient.DoCallAsyncWithWaitAndRetryPolicy(request).ConfigureAwait(false);

                var result = HttpClientExtensions.GetResponse <TEntity>(response.ResponseContent);
                return(result);
            }
            catch (Exception exception)
            {
                throw new HttpRequestException(exception.Message);
            }
        }