Exemple #1
0
        public async Task <IEnumerable <T> > ReadAsync <T>(
            CancellationToken cancellationToken,
            ISecurityToken securityToken,
            ITimeOutPolicy policy,
            string content,
            string route,
            Encoding encoding)
        {
            var request = CreateRequest(route, Actions.Read, content, HttpVerb.Get, encoding);

            var result = await Exchanger.GetString(
                cancellationToken,
                securityToken,
                policy,
                request).ConfigureAwait(false);

            try
            {
                return(Deserialize <T>(result));
            }
            catch (JsonSerializationException exception)
            {
                LogSerializationException(exception, request, result);
                throw;
            }
        }
 public ODataTypedRepository(
     ILogger logger,
     IExchanger exchanger,
     IActions actions,
     ITimeOutPolicy <T> policy)
     : base(logger, exchanger, actions, policy)
 {
 }
Exemple #3
0
 public TypedRepository(
     ILogger logger,
     IExchanger exchanger,
     IActions actions,
     ITimeOutPolicy <T> policy)
     : base(logger, exchanger, actions)
 {
     Policy = policy;
 }
        protected virtual async Task <HttpResponseMessage> RequestContent(
            CancellationToken cancellationToken,
            ISecurityToken securityToken,
            ITimeOutPolicy policy,
            IRequest request,
            string requestUri,
            StringContent content)
        {
            try
            {
                using (var client = GetClient(securityToken, policy))
                {
                    switch (request.Verb)
                    {
                    case HttpVerb.Get:
                        return(await client.GetAsync(requestUri + request.Content, cancellationToken).ConfigureAwait(false));

                    case HttpVerb.Post:
                        return(await client.PostAsync(requestUri, content, cancellationToken).ConfigureAwait(false));

                    case HttpVerb.Put:
                        return(await client.PutAsync(requestUri, content, cancellationToken).ConfigureAwait(false));

                    case HttpVerb.Delete:
                        return(await client.DeleteAsync(requestUri + request.Content, cancellationToken).ConfigureAwait(false));

                    default:
                        return(null);
                    }
                }
            }
            catch (OperationCanceledException operationCanceledException)
            {
                Logger.LogWarning($"Operation cancelled: {operationCanceledException.Message}.");
                throw;
            }
            catch (System.Runtime.InteropServices.COMException exception)
            {
                Logger.LogCritical($"Operation cancelled: {exception.Message}.");
                throw;
            }
            catch (HttpRequestException exception)
            {
                Logger.LogCritical($"Operation cancelled: {exception.Message}.");
                throw;
            }
            catch (Exception exception)
            {
                Logger.LogCritical($"Operation cancelled: {exception.Message}.");
                throw;
            }
        }
Exemple #5
0
 public async Task <IEnumerable <T> > ReadAsync <T>(
     CancellationToken cancellationToken,
     ISecurityToken securityToken,
     ITimeOutPolicy policy,
     string content)
 {
     return(await ReadAsync <T>(
                cancellationToken,
                securityToken,
                policy,
                content,
                Encoding.UTF8).ConfigureAwait(false));
 }
        public async Task <string> GetString(
            CancellationToken cancellationToken,
            ISecurityToken securityToken,
            ITimeOutPolicy policy,
            IRequest request)
        {
            var response = await RequestContent(
                cancellationToken,
                securityToken,
                policy,
                request).ConfigureAwait(false);

            return(await response.Content.ReadAsStringAsync().ConfigureAwait(false));
        }
        protected async Task <HttpResponseMessage> RequestContent(
            CancellationToken cancellationToken,
            ISecurityToken securityToken,
            ITimeOutPolicy policy,
            IRequest request)
        {
            var requestUri = string.Format(UriContainer.Format, request.Route, request.Action);
            var content    = request.Content.ToStringContent(UriContainer.ContentType, Encoding.UTF8);

            return(await RequestContent(
                       cancellationToken,
                       securityToken,
                       policy,
                       request,
                       requestUri,
                       content).ConfigureAwait(false));
        }
Exemple #8
0
        protected override async Task <HttpResponseMessage> RequestContent(
            CancellationToken cancellationToken,
            ISecurityToken securityToken,
            ITimeOutPolicy policy,
            IRequest request,
            string requestUri,
            StringContent content)
        {
            var task = base.RequestContent(
                cancellationToken,
                securityToken,
                policy,
                request,
                requestUri,
                content);

            if (policy is IPollyPolicy pollyPolicy)
            {
                return(await pollyPolicy.PolicyWrap.ExecuteAsync(() => task).ConfigureAwait(false));
            }

            return(await task.ConfigureAwait(false));
        }
        protected HttpClient GetClient(
            ISecurityToken securityToken,
            ITimeOutPolicy policy)
        {
            var client = new HttpClient
            {
                BaseAddress = UriContainer.Uri
            };

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(UriContainer.ContentType));

            if (!securityToken?.IsNullOrEmpty() ?? false)
            {
                client.DefaultRequestHeaders.Authorization =
                    new AuthenticationHeaderValue(securityToken.Schema, securityToken.Parameter);
            }

            client.Timeout = ((policy?.TimeOutMilliseconds ?? 0) > 0)
                ? TimeSpan.FromMilliseconds(policy.TimeOutMilliseconds)
                : TimeSpan.FromSeconds(30);

            return(client);
        }