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); }
/// <summary> /// Initializes a new instance of the <see cref="ResourceWrapperFactory"/> class. /// </summary> /// <param name="rawResourceFactory">The raw resource factory.</param> /// <param name="fhirRequestContextAccessor">The FHIR request context accessor.</param> /// <param name="searchIndexer">The search indexer used to generate search indices.</param> /// <param name="claimsExtractor">The claims extractor used to extract claims.</param> /// <param name="compartmentIndexer">The compartment indexer.</param> /// <param name="searchParameterDefinitionManager"> The search parameter definition manager.</param> /// <param name="resourceDeserializer">Resource deserializer</param> public ResourceWrapperFactory( IRawResourceFactory rawResourceFactory, IFhirRequestContextAccessor fhirRequestContextAccessor, ISearchIndexer searchIndexer, IClaimsExtractor claimsExtractor, ICompartmentIndexer compartmentIndexer, ISearchParameterDefinitionManager searchParameterDefinitionManager, IResourceDeserializer resourceDeserializer) { EnsureArg.IsNotNull(rawResourceFactory, nameof(rawResourceFactory)); EnsureArg.IsNotNull(searchIndexer, nameof(searchIndexer)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(claimsExtractor, nameof(claimsExtractor)); EnsureArg.IsNotNull(compartmentIndexer, nameof(compartmentIndexer)); EnsureArg.IsNotNull(searchParameterDefinitionManager, nameof(searchParameterDefinitionManager)); EnsureArg.IsNotNull(resourceDeserializer, nameof(resourceDeserializer)); _rawResourceFactory = rawResourceFactory; _searchIndexer = searchIndexer; _fhirRequestContextAccessor = fhirRequestContextAccessor; _claimsExtractor = claimsExtractor; _compartmentIndexer = compartmentIndexer; _searchParameterDefinitionManager = searchParameterDefinitionManager; _resourceDeserializer = resourceDeserializer; }
public static IFhirRequestContextAccessor SetupAccessor(this IFhirRequestContext context) { IFhirRequestContextAccessor accessor = Substitute.For <IFhirRequestContextAccessor>(); accessor.FhirRequestContext.Returns(context); return(accessor); }
public SqlServerSearchService( ISearchOptionsFactory searchOptionsFactory, IFhirDataStore fhirDataStore, SqlServerFhirModel model, SqlRootExpressionRewriter sqlRootExpressionRewriter, ChainFlatteningRewriter chainFlatteningRewriter, SortRewriter sortRewriter, SqlConnectionWrapperFactory sqlConnectionWrapperFactory, SchemaInformation schemaInformation, ISortingValidator sortingValidator, IFhirRequestContextAccessor requestContextAccessor, ILogger <SqlServerSearchService> logger) : base(searchOptionsFactory, fhirDataStore) { EnsureArg.IsNotNull(sqlRootExpressionRewriter, nameof(sqlRootExpressionRewriter)); EnsureArg.IsNotNull(chainFlatteningRewriter, nameof(chainFlatteningRewriter)); EnsureArg.IsNotNull(sqlConnectionWrapperFactory, nameof(sqlConnectionWrapperFactory)); EnsureArg.IsNotNull(schemaInformation, nameof(schemaInformation)); EnsureArg.IsNotNull(sortingValidator, nameof(sortingValidator)); EnsureArg.IsNotNull(requestContextAccessor, nameof(requestContextAccessor)); EnsureArg.IsNotNull(logger, nameof(logger)); _model = model; _sqlRootExpressionRewriter = sqlRootExpressionRewriter; _sortRewriter = sortRewriter; _chainFlatteningRewriter = chainFlatteningRewriter; _sqlConnectionWrapperFactory = sqlConnectionWrapperFactory; _logger = logger; _schemaInformation = schemaInformation; _sortingValidator = sortingValidator; _requestContextAccessor = requestContextAccessor; }
/// <summary> /// Initializes a new instance of the <see cref="FhirDataStore"/> class. /// </summary> /// <param name="documentClient"> /// A function that returns an <see cref="IDocumentClient"/>. /// Note that this is a function so that the lifetime of the instance is not directly controlled by the IoC container. /// </param> /// <param name="cosmosDataStoreConfiguration">The data store configuration</param> /// <param name="cosmosDocumentQueryFactory">The factory used to create the document query.</param> /// <param name="retryExceptionPolicyFactory">The retry exception policy factory.</param> /// <param name="fhirRequestContextAccessor">The fhir request context accessor.</param> /// <param name="namedCosmosCollectionConfigurationAccessor">The IOptions accessor to get a named version.</param> /// <param name="logger">The logger instance.</param> public FhirDataStore( IScoped <IDocumentClient> documentClient, CosmosDataStoreConfiguration cosmosDataStoreConfiguration, FhirCosmosDocumentQueryFactory cosmosDocumentQueryFactory, RetryExceptionPolicyFactory retryExceptionPolicyFactory, IFhirRequestContextAccessor fhirRequestContextAccessor, IOptionsMonitor <CosmosCollectionConfiguration> namedCosmosCollectionConfigurationAccessor, ILogger <FhirDataStore> logger) { EnsureArg.IsNotNull(documentClient, nameof(documentClient)); EnsureArg.IsNotNull(cosmosDataStoreConfiguration, nameof(cosmosDataStoreConfiguration)); EnsureArg.IsNotNull(cosmosDocumentQueryFactory, nameof(cosmosDocumentQueryFactory)); EnsureArg.IsNotNull(retryExceptionPolicyFactory, nameof(retryExceptionPolicyFactory)); EnsureArg.IsNotNull(namedCosmosCollectionConfigurationAccessor, nameof(namedCosmosCollectionConfigurationAccessor)); EnsureArg.IsNotNull(logger, nameof(logger)); _collectionConfiguration = namedCosmosCollectionConfigurationAccessor.Get(Constants.CollectionConfigurationName); _cosmosDocumentQueryFactory = cosmosDocumentQueryFactory; _retryExceptionPolicyFactory = retryExceptionPolicyFactory; _logger = logger; _documentClient = new FhirDocumentClient(documentClient.Value, fhirRequestContextAccessor, cosmosDataStoreConfiguration.ContinuationTokenSizeLimitInKb); _cosmosDataStoreConfiguration = cosmosDataStoreConfiguration; _collectionUri = cosmosDataStoreConfiguration.GetRelativeCollectionUri(_collectionConfiguration.CollectionId); _upsertWithHistoryProc = new UpsertWithHistory(); _hardDelete = new HardDelete(); }
public FhirDocumentClient(IDocumentClient inner, IFhirRequestContextAccessor fhirRequestContextAccessor, int?continuationTokenSizeLimitInKb) : this(inner) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _continuationTokenSizeLimitInKb = continuationTokenSizeLimitInKb; }
public ReindexJobTask( Func <IScoped <IFhirOperationDataStore> > fhirOperationDataStoreFactory, Func <IScoped <IFhirDataStore> > fhirDataStoreFactory, IOptions <ReindexJobConfiguration> reindexJobConfiguration, Func <IScoped <ISearchService> > searchServiceFactory, ISupportedSearchParameterDefinitionManager supportedSearchParameterDefinitionManager, IReindexUtilities reindexUtilities, IFhirRequestContextAccessor fhirRequestContextAccessor, IReindexJobThrottleController throttleController, IModelInfoProvider modelInfoProvider, ILogger <ReindexJobTask> logger) { EnsureArg.IsNotNull(fhirOperationDataStoreFactory, nameof(fhirOperationDataStoreFactory)); EnsureArg.IsNotNull(fhirDataStoreFactory, nameof(fhirDataStoreFactory)); EnsureArg.IsNotNull(reindexJobConfiguration?.Value, nameof(reindexJobConfiguration)); EnsureArg.IsNotNull(searchServiceFactory, nameof(searchServiceFactory)); EnsureArg.IsNotNull(supportedSearchParameterDefinitionManager, nameof(supportedSearchParameterDefinitionManager)); EnsureArg.IsNotNull(reindexUtilities, nameof(reindexUtilities)); EnsureArg.IsNotNull(throttleController, nameof(throttleController)); EnsureArg.IsNotNull(modelInfoProvider, nameof(modelInfoProvider)); EnsureArg.IsNotNull(logger, nameof(logger)); _fhirOperationDataStoreFactory = fhirOperationDataStoreFactory; _fhirDataStoreFactory = fhirDataStoreFactory; _reindexJobConfiguration = reindexJobConfiguration.Value; _searchServiceFactory = searchServiceFactory; _supportedSearchParameterDefinitionManager = supportedSearchParameterDefinitionManager; _reindexUtilities = reindexUtilities; _contextAccessor = fhirRequestContextAccessor; _throttleController = throttleController; _modelInfoProvider = modelInfoProvider; _logger = logger; }
public BundleHandlerTests() { _router = Substitute.For <IRouter>(); var fhirRequestContext = new DefaultFhirRequestContext { BaseUri = new Uri("https://localhost/"), CorrelationId = Guid.NewGuid().ToString(), }; _fhirRequestContextAccessor = Substitute.For <IFhirRequestContextAccessor>(); _fhirRequestContextAccessor.FhirRequestContext.Returns(fhirRequestContext); _httpContextAccessor = Substitute.For <IHttpContextAccessor>(); _fhirJsonSerializer = new FhirJsonSerializer(); _fhirJsonParser = new FhirJsonParser(); _searchService = Substitute.For <ISearchService>(); var fhirDataStore = Substitute.For <IFhirDataStore>(); var conformanceProvider = Substitute.For <Lazy <IConformanceProvider> >(); var resourceWrapperFactory = Substitute.For <IResourceWrapperFactory>(); var resourceIdProvider = Substitute.For <ResourceIdProvider>(); var transactionBundleValidator = new TransactionBundleValidator(fhirDataStore, conformanceProvider, resourceWrapperFactory, _searchService, resourceIdProvider); _bundleHttpContextAccessor = new BundleHttpContextAccessor(); IFeatureCollection featureCollection = CreateFeatureCollection(); var httpContext = new DefaultHttpContext(featureCollection) { Request = { Scheme = "https", Host = new HostString("localhost"), PathBase = new PathString("/"), }, }; _httpContextAccessor.HttpContext.Returns(httpContext); var transactionHandler = Substitute.For <ITransactionHandler>(); _resourceIdProvider = new ResourceIdProvider(); _auditEventTypeMapping = Substitute.For <IAuditEventTypeMapping>(); _bundleHandler = new BundleHandler( _httpContextAccessor, _fhirRequestContextAccessor, _fhirJsonSerializer, _fhirJsonParser, transactionHandler, _bundleHttpContextAccessor, _resourceIdProvider, transactionBundleValidator, _auditEventTypeMapping, NullLogger <BundleHandler> .Instance); }
public SearchableSearchParameterDefinitionManager(SearchParameterDefinitionManager inner, IFhirRequestContextAccessor fhirRequestContextAccessor) { EnsureArg.IsNotNull(inner, nameof(inner)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); _inner = inner; _fhirReqeustContextAccessor = fhirRequestContextAccessor; }
public BundleFactory(IUrlResolver urlResolver, IFhirRequestContextAccessor fhirRequestContextAccessor) { EnsureArg.IsNotNull(urlResolver, nameof(urlResolver)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); _urlResolver = urlResolver; _fhirRequestContextAccessor = fhirRequestContextAccessor; }
public PrincipalClaimsExtractor(IFhirRequestContextAccessor fhirRequestContextAccessor, IOptions <SecurityConfiguration> securityConfiguration) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(securityConfiguration, nameof(securityConfiguration)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _securityConfiguration = securityConfiguration.Value; }
/// <summary> /// Initializes a new instance of the <see cref="FhirCosmosDocumentQueryFactory"/> class. /// </summary> /// <param name="fhirRequestContextAccessor">The request context accessor</param> /// <param name="logger">The logger.</param> public FhirCosmosDocumentQueryFactory(IFhirRequestContextAccessor fhirRequestContextAccessor, IFhirDocumentQueryLogger logger) { EnsureArg.IsNotNull(logger, nameof(logger)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); _logger = logger; _fhirRequestContextAccessor = fhirRequestContextAccessor; }
public DocumentClientWithConsistencyLevelFromContextTests() { _innerClient = Substitute.For <IDocumentClient>(); _fhirRequestContextAccessor = Substitute.For <IFhirRequestContextAccessor>(); _fhirRequestContextAccessor.FhirRequestContext.RequestHeaders.Returns(_requestHeaders); _fhirRequestContextAccessor.FhirRequestContext.ResponseHeaders.Returns(_responseHeaders); _consistentClient = new DocumentClientWithConsistencyLevelFromContext(_innerClient, _fhirRequestContextAccessor); }
public FhirDocumentClientTests() { _innerClient = Substitute.For <IDocumentClient>(); _fhirRequestContextAccessor = Substitute.For <IFhirRequestContextAccessor>(); _fhirRequestContextAccessor.FhirRequestContext.RequestHeaders.Returns(_requestHeaders); _fhirRequestContextAccessor.FhirRequestContext.ResponseHeaders.Returns(_responseHeaders); _fhirClient = new FhirDocumentClient(_innerClient, _fhirRequestContextAccessor, null); }
public RoleBasedFhirAuthorizationService(AuthorizationConfiguration authorizationConfiguration, IFhirRequestContextAccessor requestContextAccessor) { EnsureArg.IsNotNull(authorizationConfiguration, nameof(authorizationConfiguration)); EnsureArg.IsNotNull(requestContextAccessor, nameof(requestContextAccessor)); _requestContextAccessor = requestContextAccessor; _rolesClaimName = authorizationConfiguration.RolesClaim; _roles = authorizationConfiguration.Roles.ToDictionary(r => r.Name, StringComparer.OrdinalIgnoreCase); }
public FhirDocumentClientInitializer(IDocumentClientTestProvider testProvider, IFhirRequestContextAccessor fhirRequestContextAccessor, ILogger <FhirDocumentClientInitializer> logger) { EnsureArg.IsNotNull(logger, nameof(logger)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(testProvider, nameof(testProvider)); _testProvider = testProvider; _fhirRequestContextAccessor = fhirRequestContextAccessor; _logger = logger; }
public FhirRequestContextRouteDataPopulatingFilterAttribute( IFhirRequestContextAccessor fhirRequestContextAccessor, IAuditEventTypeMapping auditEventTypeMapping) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(auditEventTypeMapping, nameof(auditEventTypeMapping)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _auditEventTypeMapping = auditEventTypeMapping; }
public CosmosResponseProcessor(IFhirRequestContextAccessor fhirRequestContextAccessor, IMediator mediator, ILogger <CosmosResponseProcessor> logger) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(mediator, nameof(mediator)); EnsureArg.IsNotNull(logger, nameof(logger)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _mediator = mediator; _logger = logger; }
public SmartOnFhirAuditLoggingFilterAttribute(string action, IAuditLogger auditLogger, IFhirRequestContextAccessor fhirRequestContextAccessor) { EnsureArg.IsNotNullOrWhiteSpace(action, nameof(action)); EnsureArg.IsNotNull(auditLogger, nameof(auditLogger)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); _action = action; _auditLogger = auditLogger; _fhirRequestContextAccessor = fhirRequestContextAccessor; }
public ReindexJobCosmosThrottleController( IFhirRequestContextAccessor fhirRequestContextAccessor, ILogger <ReindexJobCosmosThrottleController> logger) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(logger, nameof(logger)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _logger = logger; }
public FhirCosmosResponseHandler( Func <IScoped <Container> > client, CosmosDataStoreConfiguration cosmosDataStoreConfiguration, IFhirRequestContextAccessor fhirRequestContextAccessor, ICosmosResponseProcessor cosmosResponseProcessor) { _client = client; _cosmosDataStoreConfiguration = cosmosDataStoreConfiguration; _fhirRequestContextAccessor = fhirRequestContextAccessor; _cosmosResponseProcessor = cosmosResponseProcessor; }
public async Task Invoke(HttpContext context, IFhirRequestContextAccessor fhirRequestContextAccessor) { // Now the authentication is completed successfully, sets the user. if (context.User != null) { fhirRequestContextAccessor.FhirRequestContext.Principal = context.User; } // Call the next delegate/middleware in the pipeline await _next(context); }
public Task Invoke(HttpContext context, IFhirRequestContextAccessor fhirRequestContextAccessor) { // Set the user again to pick up anything that was set during authentication, e.g. claims. if (context.User != null) { fhirRequestContextAccessor.FhirRequestContext.Principal = context.User; } // Call the next delegate/middleware in the pipeline return(_next(context)); }
public ExportController( IFhirRequestContextAccessor fhirRequestContextAccessor, IOptions<OperationsConfiguration> operationsConfig, ILogger<ExportController> logger) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(operationsConfig?.Value?.Export, nameof(operationsConfig)); EnsureArg.IsNotNull(logger, nameof(logger)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _exportConfig = operationsConfig.Value.Export; _logger = logger; }
public AuditHelper( IFhirRequestContextAccessor fhirRequestContextAccessor, IAuditLogger auditLogger, IAuditHeaderReader auditHeaderReader) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(auditLogger, nameof(auditLogger)); EnsureArg.IsNotNull(auditHeaderReader, nameof(auditHeaderReader)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _auditLogger = auditLogger; _auditHeaderReader = auditHeaderReader; }
public AuditMiddleware( RequestDelegate next, IFhirRequestContextAccessor fhirRequestContextAccessor, IAuditHelper auditHelper) { EnsureArg.IsNotNull(next, nameof(next)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(auditHelper, nameof(auditHelper)); _next = next; _fhirRequestContextAccessor = fhirRequestContextAccessor; _auditHelper = auditHelper; }
public FhirRequestContextBeforeAuthenticationMiddleware( RequestDelegate next, IFhirRequestContextAccessor fhirRequestContextAccessor, IAuditEventTypeMapping auditEventTypeMapping) { EnsureArg.IsNotNull(next, nameof(next)); EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(auditEventTypeMapping, nameof(auditEventTypeMapping)); _next = next; _fhirRequestContextAccessor = fhirRequestContextAccessor; _auditEventTypeMapping = auditEventTypeMapping; }
public FhirDocumentClientTests() { _innerClient = Substitute.For <IDocumentClient>(); _fhirRequestContextAccessor = Substitute.For <IFhirRequestContextAccessor>(); _fhirRequestContextAccessor.FhirRequestContext.RequestHeaders.Returns(_requestHeaders); _fhirRequestContextAccessor.FhirRequestContext.ResponseHeaders.Returns(_responseHeaders); var cosmosStorageMetrics = new CosmosStorageRequestMetrics("test operation", "test resource"); _fhirRequestContextAccessor.FhirRequestContext.StorageRequestMetrics.Returns(cosmosStorageMetrics); _fhirClient = new FhirDocumentClient(_innerClient, _fhirRequestContextAccessor, null); }
public ApiNotificationMiddleware( IFhirRequestContextAccessor fhirRequestContextAccessor, IMediator mediator, ILogger <ApiNotificationMiddleware> logger) { EnsureArg.IsNotNull(fhirRequestContextAccessor, nameof(fhirRequestContextAccessor)); EnsureArg.IsNotNull(mediator, nameof(mediator)); EnsureArg.IsNotNull(logger, nameof(logger)); _fhirRequestContextAccessor = fhirRequestContextAccessor; _mediator = mediator; _logger = logger; }
public CosmosResponseProcessorTests() { _fhirRequestContextAccessor = Substitute.For <IFhirRequestContextAccessor>(); _fhirRequestContextAccessor.FhirRequestContext.RequestHeaders.Returns(_requestHeaders); _fhirRequestContextAccessor.FhirRequestContext.ResponseHeaders.Returns(_responseHeaders); _fhirRequestContextAccessor.FhirRequestContext.ResourceType.Returns("resource"); _fhirRequestContextAccessor.FhirRequestContext.AuditEventType.Returns("operation"); _mediator = Substitute.For <IMediator>(); var nullLogger = NullLogger <CosmosResponseProcessor> .Instance; _cosmosResponseProcessor = new CosmosResponseProcessor(_fhirRequestContextAccessor, _mediator, nullLogger); }