private RequestContext SetupRequestContext <TResult>(AtsRequest <TResult> request, ILogger logger = null) { var operationContext = new OperationContext(); if (logger != null) { operationContext.Retrying += (sender, args) => logger.WriteInformation( args, a => Strings.FormatLogRequestRetry(a.Request.RequestUri)); operationContext.SendingRequest += (sender, args) => logger.WriteVerbose( args, a => Strings.FormatLogSendingRequest(a.Request.RequestUri)); operationContext.ResponseReceived += (sender, args) => logger.WriteInformation( args, a => Strings.FormatLogResponseReceived( a.Request.RequestUri, a.Response.StatusCode, a.Response.StatusDescription)); logger.WriteInformation(request, r => Strings.FormatLogExecutingRequest(request.Name)); } return(new RequestContext { OperationContext = operationContext, TableClient = _tableClient.Value, TableRequestOptions = TableRequestOptions }); }
public virtual TResult ExecuteRequest <TResult>([NotNull] AtsRequest <TResult> request, [CanBeNull] ILogger logger = null) { Check.NotNull(request, "request"); var requestContext = SetupRequestContext(request, logger); return(request.Execute(requestContext)); }
private RequestContext SetupRequestContext <TResult>(AtsRequest <TResult> request, ILogger logger = null) { var operationContext = new OperationContext(); if (logger != null) { operationContext.Retrying += (sender, args) => logger.WriteInformation( String.Format("Retrying request to '{0}'", args.Request.RequestUri.ToString()) ); operationContext.SendingRequest += (sender, args) => logger.WriteVerbose( String.Format("Sending request to '{0}'", args.Request.RequestUri.ToString()) ); operationContext.ResponseReceived += (sender, args) => { var msg = String.Format("Response from '{0}' = {1} {2}", args.Request.RequestUri.ToString(), (int)args.Response.StatusCode, args.Response.StatusDescription); if (args.Response.StatusCode >= HttpStatusCode.BadRequest) { logger.WriteError(msg); } else { logger.WriteVerbose(msg); } }; logger.WriteInformation(String.Format("Executing request '{0}'", request.Name)); } return(new RequestContext { OperationContext = operationContext, TableClient = _tableClient.Value, TableRequestOptions = TableRequestOptions }); }