public void TestCreateNewGuid() { var requestHeaderDictionary = new HeaderDictionary(); var responseHeaderDictionary = new HeaderDictionary(); var httpRequestMoq = new Mock <HttpRequest>(); httpRequestMoq.SetupGet(hrm => hrm.Headers).Returns(requestHeaderDictionary); var httpResponseMoq = new Mock <HttpResponse>(); httpResponseMoq.SetupGet(hrm => hrm.Headers).Returns(responseHeaderDictionary); var httpContextMoq = new Mock <HttpContext>(); httpContextMoq.SetupGet(hcm => hcm.Request).Returns(httpRequestMoq.Object); httpContextMoq.SetupGet(hcm => hcm.Response).Returns(httpResponseMoq.Object); var httpContextAccessorMoq = new Mock <IHttpContextAccessor>(); httpContextAccessorMoq.SetupGet(hcam => hcam.HttpContext).Returns(httpContextMoq.Object); var provider = new CorrelationIdProvider(httpContextAccessorMoq.Object); Assert.NotEqual(Guid.Empty, provider.GetCorrelationId()); }
public void TestGetFromResponseHeaders() { var guid = Guid.NewGuid(); var requestHeaderDictionary = new HeaderDictionary(); var responseHeaderDictionary = new HeaderDictionary(); responseHeaderDictionary.Add("Nar-Correlation-Id", guid.ToString()); var httpRequestMoq = new Mock <HttpRequest>(); httpRequestMoq.SetupGet(hrm => hrm.Headers).Returns(requestHeaderDictionary); var httpResponseMoq = new Mock <HttpResponse>(); httpResponseMoq.SetupGet(hrm => hrm.Headers).Returns(responseHeaderDictionary); var httpContextMoq = new Mock <HttpContext>(); httpContextMoq.SetupGet(hcm => hcm.Request).Returns(httpRequestMoq.Object); httpContextMoq.SetupGet(hcm => hcm.Response).Returns(httpResponseMoq.Object); var httpContextAccessorMoq = new Mock <IHttpContextAccessor>(); httpContextAccessorMoq.SetupGet(hcam => hcam.HttpContext).Returns(httpContextMoq.Object); var provider = new CorrelationIdProvider(httpContextAccessorMoq.Object); Assert.Equal(guid, provider.GetCorrelationId()); }
public Task InvokeAsync(HttpContext context, CorrelationIdProvider scopedCorrelationIdProvider) { _logger.LogInformation("Static correlation ID: {CorrelationId}", _staticCorrelationIdMiddleware.CorrelationId); context.Request.Headers.Add("correlation-id", $"{scopedCorrelationIdProvider.CorrelationId}"); return(_next.Invoke(context)); }
protected virtual void AddHeaders(IAbpMethodInvocation invocation, ActionApiDescriptionModel action, HttpRequestMessage requestMessage, ApiVersionInfo apiVersion) { //API Version if (!apiVersion.Version.IsNullOrEmpty()) { //TODO: What about other media types? requestMessage.Headers.Add("accept", $"{MimeTypes.Text.Plain}; v={apiVersion.Version}"); requestMessage.Headers.Add("accept", $"{MimeTypes.Application.Json}; v={apiVersion.Version}"); requestMessage.Headers.Add("api-version", apiVersion.Version); } //Header parameters var headers = action.Parameters.Where(p => p.BindingSourceId == ParameterBindingSources.Header).ToArray(); foreach (var headerParameter in headers) { var value = HttpActionParameterHelper.FindParameterValue(invocation.ArgumentsDictionary, headerParameter); if (value != null) { requestMessage.Headers.Add(headerParameter.Name, value.ToString()); } } //CorrelationId requestMessage.Headers.Add(CorrelationIdOptions.HttpHeaderName, CorrelationIdProvider.Get()); }
public TargetClient(IHttpClientFactory httpClientFactory, CorrelationIdProvider correlationIdProvider, IOptions <BaseUrls> options) { _options = options.Value ?? throw new ArgumentNullException(nameof(options)); var correlationId = correlationIdProvider.Invoke(); _httpClient = httpClientFactory.CreateClient("MyClient"); _httpClient.BaseAddress = new System.Uri(_options.TargetClient); }
static void Main(string[] args) { Serilog.ILogger logger = new LoggerConfiguration() .WriteTo.Console() .CreateLogger(); IFeatureToggle featureToggle = new FeatureToggles(); //string specificationId = "a1fe8998-406b-44b8-92c7-502a560e7b6e"; ////string providerId = "10027545"; //string providerId = "10004758"; string specificationId = "b1952bc1-4ed9-4ae1-b29d-c72d8d22e830"; //string providerId = "10027545"; string providerId = "10063088"; IConfigurationRoot config = ConfigHelper.AddConfig(); EngineSettings engineSettings = new EngineSettings(); CosmosDbSettings dbSettings = new CosmosDbSettings(); config.Bind("CosmosDbSettings", dbSettings); dbSettings.CollectionName = "providerdatasets"; CosmosRepository calcsCosmosRepostory = new CosmosRepository(dbSettings); IProviderSourceDatasetsRepository providerSourceDatasetsRepository = new ProviderSourceDatasetsRepository(calcsCosmosRepostory, engineSettings); RedisSettings redisSettings = new RedisSettings(); config.Bind("redisSettings", redisSettings); ICacheProvider cacheProvider = new StackExchangeRedisClientCacheProvider(redisSettings); ApiOptions apiOptions = new ApiOptions(); config.Bind("resultsClient", apiOptions); ICorrelationIdProvider correlationIdProvider = new CorrelationIdProvider(); IResultsApiClientProxy resultsApi = new ResultsApiProxy(apiOptions, logger, correlationIdProvider); IMapper mapper = new MapperConfiguration(c => { c.AddProfile <ProviderMappingProfile>(); }).CreateMapper(); ProviderService providerService = new ProviderService(cacheProvider, resultsApi, mapper); FilesystemCacheProviderService filesystemCacheProviderService = new FilesystemCacheProviderService(providerService); AllocationModelDebugRunner debugger = new AllocationModelDebugRunner(logger, featureToggle, providerSourceDatasetsRepository, filesystemCacheProviderService); (IEnumerable <Models.Results.CalculationResult> calculationResults, long ms) = debugger.Execute(specificationId, providerId).Result; CalculationRunSummaryGenerator summaryGenerator = new CalculationRunSummaryGenerator(); summaryGenerator.GenerateSummary(calculationResults, ms, specificationId, providerId); }
public CorrelationIdMiddleware( RequestDelegate next, CorrelationIdProvider staticCorrelationIdMiddleware, ILogger <CorrelationIdMiddleware> logger) { _next = next; _staticCorrelationIdMiddleware = staticCorrelationIdMiddleware; _logger = logger; }
public void TestExceptionThrownWhenNotInHttpContext() { var httpContextAccessorMoq = new Mock <IHttpContextAccessor>(); var provider = new CorrelationIdProvider(httpContextAccessorMoq.Object); var ex = Assert.Throws <Exception>(() => provider.GetCorrelationId()); Assert.Equal("Correlation Id was asked when not in a request context", ex.Message); }
public void GetCorrelationId_return_correlationId_from_request_header() { var correlationId = Guid.NewGuid().ToString("D"); var configuration = Substitute.For <IConfiguration>(); configuration["CorrelationId"].Returns("CorrelationIdKey"); var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); httpContextAccessor.HttpContext.Returns(new DefaultHttpContext()); httpContextAccessor.HttpContext.Request.Headers["CorrelationIdKey"] = correlationId; var correlationIdProvider = new CorrelationIdProvider(configuration, httpContextAccessor); correlationIdProvider.GetCorrelationId().Should().Be(correlationId); }
public void AddCorrelationId_without_existing_correlationId_set_correlationId() { var correlationId = Guid.NewGuid().ToString("D"); var configuration = Substitute.For <IConfiguration>(); configuration["CorrelationId"].Returns("CorrelationIdKey"); var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); httpContextAccessor.HttpContext.Returns(new DefaultHttpContext()); var correlationIdProvider = new CorrelationIdProvider(configuration, httpContextAccessor); correlationIdProvider.AddCorrelationId(); httpContextAccessor.HttpContext.Request.Headers["CorrelationIdKey"].Should().NotBeNullOrEmpty(); }
protected virtual void AddHeaders(IAbpMethodInvocation invocation, ActionApiDescriptionModel action, HttpRequestMessage requestMessage, ApiVersionInfo apiVersion) { //API Version if (!apiVersion.Version.IsNullOrEmpty()) { //TODO: What about other media types? requestMessage.Headers.Add("accept", $"{MimeTypes.Text.Plain}; v={apiVersion.Version}"); requestMessage.Headers.Add("accept", $"{MimeTypes.Application.Json}; v={apiVersion.Version}"); requestMessage.Headers.Add("api-version", apiVersion.Version); } //Header parameters var headers = action.Parameters.Where(p => p.BindingSourceId == ParameterBindingSources.Header).ToArray(); foreach (var headerParameter in headers) { var value = HttpActionParameterHelper.FindParameterValue(invocation.ArgumentsDictionary, headerParameter); if (value != null) { requestMessage.Headers.Add(headerParameter.Name, value.ToString()); } } //CorrelationId requestMessage.Headers.Add(AbpCorrelationIdOptions.HttpHeaderName, CorrelationIdProvider.Get()); //TenantId if (CurrentTenant.Id.HasValue) { //TODO: Use AbpAspNetCoreMultiTenancyOptions to get the key requestMessage.Headers.Add(TenantResolverConsts.DefaultTenantKey, CurrentTenant.Id.Value.ToString()); } //Culture //TODO: Is that the way we want? Couldn't send the culture (not ui culture) var currentCulture = CultureInfo.CurrentUICulture.Name ?? CultureInfo.CurrentCulture.Name; if (!currentCulture.IsNullOrEmpty()) { requestMessage.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(currentCulture)); } //X-Requested-With requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest"); }
/// <summary> /// 创建 /// </summary> protected override async Task <SecurityLogInfo> CreateAsync() { var securityLogInfo = await base.CreateAsync(); securityLogInfo.CreationTime = DateTime.Now; securityLogInfo.UserId = CurrentUser.UserId; securityLogInfo.UserName = CurrentUser.UserName; securityLogInfo.ClientId = CurrentClient.Id; securityLogInfo.CorrelationId = CorrelationIdProvider.Get(); securityLogInfo.ClientIpAddress = WebClientInfoProvider.ClientIpAddress; securityLogInfo.BrowserInfo = WebClientInfoProvider.BrowserInfo; return(securityLogInfo); }
public void AddCorrelationId_with_correlationId_set_does_change_correlationId() { var correlationId = Guid.NewGuid().ToString("D"); var configuration = Substitute.For <IConfiguration>(); configuration["CorrelationId"].Returns("CorrelationIdKey"); var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); httpContextAccessor.HttpContext.Returns(new DefaultHttpContext()); httpContextAccessor.HttpContext.Request.Headers["CorrelationIdKey"] = correlationId; var correlationIdProvider = new CorrelationIdProvider(configuration, httpContextAccessor); correlationIdProvider.AddCorrelationId(); httpContextAccessor.HttpContext.Request.Headers["CorrelationIdKey"].Should().BeEquivalentTo(correlationId); }
public BaseExceptionMiddleware( RequestDelegate next, ILogger <BaseExceptionMiddleware> logger, IFhirRequestContextAccessor fhirRequestContextAccessor, CorrelationIdProvider correlationIdProvider, IContentTypeService contentTypeService) { EnsureArg.IsNotNull(next, nameof(next)); EnsureArg.IsNotNull(logger, nameof(logger)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(correlationIdProvider, nameof(correlationIdProvider)); EnsureArg.IsNotNull(contentTypeService, nameof(contentTypeService)); _next = next; _logger = logger; _fhirRequestContextAccessor = fhirRequestContextAccessor; _correlationIdProvider = correlationIdProvider; _contentTypeService = contentTypeService; }
/// <summary> /// Create a search service client from the specified base uri and credentials. /// </summary> /// <param name="baseUri">The URL to the root of the service</param> /// <param name="resourceType">Resource type to query against</param> /// <param name="credentials">The credentials to connect to the service with</param> /// <param name="healthIndicatorStore">Health indicator store</param> /// <param name="handlers">Handlers to apply to the request in order from first to last</param> public SearchClient(Uri baseUri, string resourceType, ICredentials credentials, IEndpointHealthIndicatorStore healthIndicatorStore, params DelegatingHandler[] handlers) { _resourceType = resourceType; // Link the handlers HttpMessageHandler handler = new HttpClientHandler() { Credentials = credentials, AllowAutoRedirect = true, UseDefaultCredentials = credentials == null }; foreach (var providedHandler in handlers.Reverse()) { providedHandler.InnerHandler = handler; handler = providedHandler; } _httpClient = new HttpClient(handler, disposeHandler: true); _retryingHttpClientWrapper = new RetryingHttpClientWrapper(_httpClient, healthIndicatorStore); _discoveryClient = new ServiceDiscoveryClient(_httpClient, baseUri); CorrelationIdProvider = new CorrelationIdProvider(); }
protected virtual void AddHeaders(HttpRequestMessage requestMessage) { //CorrelationId requestMessage.Headers.Add(AbpCorrelationIdOptions.HttpHeaderName, CorrelationIdProvider.Get()); //TenantId if (CurrentTenant.Id.HasValue) { //TODO: Use AbpAspNetCoreMultiTenancyOptions to get the key requestMessage.Headers.Add(TenantResolverConsts.DefaultTenantKey, CurrentTenant.Id.Value.ToString()); } //Culture //TODO: Is that the way we want? Couldn't send the culture (not ui culture) var currentCulture = CultureInfo.CurrentUICulture.Name ?? CultureInfo.CurrentCulture.Name; if (!currentCulture.IsNullOrEmpty()) { requestMessage.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(currentCulture)); } //X-Requested-With requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest"); }
public Task Invoke(HttpContext context, IFhirRequestContextAccessor fhirRequestContextAccessor, CorrelationIdProvider correlationIdProvider) { HttpRequest request = context.Request; string baseUriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase); string uriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase, request.Path, request.QueryString); string correlationId = correlationIdProvider.Invoke(); object resourceType = null; RouteData routeData = context.GetRouteData(); if (routeData != null && routeData.Values != null) { routeData.Values.TryGetValue(KnownActionParameterNames.ResourceType, out resourceType); } var fhirRequestContext = new FhirRequestContext( method: request.Method, uriString: uriInString, baseUriString: baseUriInString, correlationId: correlationId, requestHeaders: context.Request.Headers, responseHeaders: context.Response.Headers, resourceType: resourceType?.ToString()); context.Response.Headers[RequestIdHeaderName] = correlationId; // Note that if this is executed before authentication occurs, the user will not contain any claims. if (context.User != null) { fhirRequestContext.Principal = context.User; } fhirRequestContextAccessor.FhirRequestContext = fhirRequestContext; // Call the next delegate/middleware in the pipeline return(_next(context)); }
public async Task Invoke(HttpContext context, IFhirRequestContextAccessor fhirRequestContextAccessor, CorrelationIdProvider correlationIdProvider) { HttpRequest request = context.Request; string baseUriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase); string uriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase, request.Path, request.QueryString); string correlationId = correlationIdProvider.Invoke(); var fhirRequestContext = new FhirRequestContext( method: request.Method, uriString: uriInString, baseUriString: baseUriInString, correlationId: correlationId, requestHeaders: context.Request.Headers, responseHeaders: context.Response.Headers); context.Response.Headers[RequestIdHeaderName] = correlationId; fhirRequestContextAccessor.FhirRequestContext = fhirRequestContext; // Call the next delegate/middleware in the pipeline await _next(context); }
public CorrelationMiddleware(ILoggerScope loggerScope, CorrelationIdProvider correlationIdProvider, RequestDelegate next) { this._loggerScope = loggerScope; _correlationIdProvider = correlationIdProvider; this._next = next; }
public Task Invoke(HttpContext context, IFhirRequestContextAccessor fhirRequestContextAccessor, CorrelationIdProvider correlationIdProvider) { HttpRequest request = context.Request; string baseUriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase); string uriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase, request.Path, request.QueryString); string correlationId = correlationIdProvider.Invoke(); var fhirRequestContext = new FhirRequestContext( method: request.Method, uriString: uriInString, baseUriString: baseUriInString, requestType: new CodingInfo(AuditEventType.System, AuditEventType.RestFulOperationCode), correlationId: correlationId, requestHeaders: context.Request.Headers, responseHeaders: context.Response.Headers); context.Response.Headers[RequestIdHeaderName] = correlationId; // Note that if this is executed before authentication occurs, the user will not contain any claims. if (context.User != null) { fhirRequestContext.Principal = context.User; } fhirRequestContextAccessor.FhirRequestContext = fhirRequestContext; // Call the next delegate/middleware in the pipeline return(_next(context)); }
public Task Invoke(HttpContext context, IFhirRequestContextAccessor fhirRequestContextAccessor, CorrelationIdProvider correlationIdProvider) { HttpRequest request = context.Request; string baseUriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase); string uriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase, request.Path, request.QueryString); var fhirRequestContext = new FhirRequestContext( method: request.Method, uriString: uriInString, baseUriString: baseUriInString, requestType: ValueSets.AuditEventType.RestFulOperation, correlationId: correlationIdProvider.Invoke(), requestHeaders: context.Request.Headers, responseHeaders: context.Response.Headers); if (context.User != null) { fhirRequestContext.Principal = context.User; } fhirRequestContextAccessor.FhirRequestContext = fhirRequestContext; // Call the next delegate/middleware in the pipeline return(_next(context)); }
public DefaultHttpRequestMessageHandlerNonWeb(CorrelationIdProvider correlationIdProvider) { _correlationIdProvider = correlationIdProvider; }
public async Task Invoke(HttpContext context, RequestContextAccessor <IFhirRequestContext> fhirRequestContextAccessor, CorrelationIdProvider correlationIdProvider) { HttpRequest request = context.Request; string baseUriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase); string uriInString = UriHelper.BuildAbsolute( request.Scheme, request.Host, request.PathBase, request.Path, request.QueryString); string correlationId = correlationIdProvider.Invoke(); // https://www.hl7.org/fhir/http.html#custom // If X-Request-Id header is present, then put it value into X-Correlation-Id header for response. if (context.Request.Headers.TryGetValue(KnownHeaders.RequestId, out var requestId) && !string.IsNullOrEmpty(requestId)) { context.Response.Headers[KnownHeaders.CorrelationId] = requestId; } var fhirRequestContext = new FhirRequestContext( method: request.Method, uriString: uriInString, baseUriString: baseUriInString, correlationId: correlationId, requestHeaders: context.Request.Headers, responseHeaders: context.Response.Headers); context.Response.Headers[KnownHeaders.RequestId] = correlationId; fhirRequestContextAccessor.RequestContext = fhirRequestContext; // Call the next delegate/middleware in the pipeline await _next(context); }