示例#1
0
        public void GivenAnImportResult_WhenSettingAContentTypeHeader_ThenImportResultHasAContentTypeHeader()
        {
            string contentTypeValue = "application/json";
            var    bulkImportResult = ImportResult.Accepted().SetContentTypeHeader(contentTypeValue);

            Assert.Equal(contentTypeValue, bulkImportResult.Headers[HeaderNames.ContentType]);
        }
        public async Task <IActionResult> Import([FromBody] Parameters importTaskParameters)
        {
            CheckIfImportIsEnabled();

            ImportRequest importRequest = importTaskParameters.ExtractImportRequest();

            ValidateImportRequestConfiguration(importRequest);

            if (!ImportConstants.InitialLoadMode.Equals(importRequest.Mode, StringComparison.Ordinal))
            {
                throw new RequestNotValidException(Resources.OnlyInitialImportOperationSupported);
            }

            if (!importRequest.Force && !_importConfig.InitialImportMode)
            {
                throw new RequestNotValidException(Resources.InitialImportModeNotEnabled);
            }

            CreateImportResponse response = await _mediator.ImportAsync(
                _fhirRequestContextAccessor.RequestContext.Uri,
                importRequest.InputFormat,
                importRequest.InputSource,
                importRequest.Input,
                importRequest.StorageDetail,
                HttpContext.RequestAborted);

            var bulkImportResult = ImportResult.Accepted();

            bulkImportResult.SetContentLocationHeader(_urlResolver, OperationsConstants.Import, response.TaskId);
            return(bulkImportResult);
        }
示例#3
0
        public void GivenAnImportResult_WhenSettingAContentLocationHeader_ThenImportResultHasAContentLocationHeader()
        {
            string opName = OperationsConstants.Import;
            string id     = Guid.NewGuid().ToString();
            var    bulkImportOperationUrl = new Uri($"http://localhost/{OperationsConstants.Operations}/{opName}/{id}");

            var urlResolver = Substitute.For <IUrlResolver>();

            urlResolver.ResolveOperationResultUrl(Arg.Any <string>(), Arg.Any <string>()).Returns(bulkImportOperationUrl);

            var bulkImportResult = ImportResult.Accepted().SetContentLocationHeader(urlResolver, opName, id);

            Assert.Equal(bulkImportOperationUrl.AbsoluteUri, bulkImportResult.Headers[HeaderNames.ContentLocation]);
        }
        public async Task <IActionResult> GetImportStatusById(string idParameter)
        {
            var getBulkImportResult = await _mediator.GetImportStatusAsync(
                idParameter,
                HttpContext.RequestAborted);

            // If the job is complete, we need to return 200 along with the completed data to the client.
            // Else we need to return 202 - Accepted.
            ImportResult bulkImportActionResult;

            if (getBulkImportResult.StatusCode == HttpStatusCode.OK)
            {
                bulkImportActionResult = ImportResult.Ok(getBulkImportResult.TaskResult);
                bulkImportActionResult.SetContentTypeHeader(OperationsConstants.BulkImportContentTypeHeaderValue);
            }
            else
            {
                bulkImportActionResult = ImportResult.Accepted();
            }

            return(bulkImportActionResult);
        }