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) { }
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; } }
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)); }
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); }