From fa73a458bd0e053d26818c32f4a4de92c86f7499 Mon Sep 17 00:00:00 2001 From: Salim Kanoun Date: Tue, 20 Jun 2023 09:34:20 +0000 Subject: [PATCH] WIP (not tested yet) --- .../default/src/DicomWebDataSource/index.js | 49 ++++++++++++------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index c0f05b4d2..a75781b6c 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -67,26 +67,35 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { const dicomWebConfigCopy = JSON.parse(JSON.stringify(dicomWebConfig)); - //Generate accept header depending on config params - let formattedAcceptHeader = utils.generateAcceptHeader( - acceptHeader, - requestTransferSyntaxUID, - omitQuotationForMultipartRequest - ); + const getAuthrorizationHeader = () => { + const xhrRequestHeaders = {}; + const authHeaders = userAuthenticationService.getAuthorizationHeader(); + if (authHeaders && authHeaders.Authorization) { + xhrRequestHeaders.Authorization = authHeaders.Authorization; + } + return xhrRequestHeaders; + }; - const authHeaders = userAuthenticationService.getAuthorizationHeader(); + const generateWadoHeader = () => { + let baseHeader = getAuthrorizationHeader(); + //Generate accept header depending on config params + let formattedAcceptHeader = utils.generateAcceptHeader( + acceptHeader, + requestTransferSyntaxUID, + omitQuotationForMultipartRequest + ); - const xhrRequestHeaders = {}; - - if (authHeaders && authHeaders.Authorization) { - xhrRequestHeaders.Authorization = authHeaders.Authorization; - } + return { + ...baseHeader, + Accept: formattedAcceptHeader, + }; + }; const qidoConfig = { url: qidoRoot, staticWado, singlepart, - headers: xhrRequestHeaders, + headers: getAuthrorizationHeader(), errorInterceptor: errorHandler.getHTTPErrorHandler(), }; @@ -94,10 +103,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { url: wadoRoot, staticWado, singlepart, - headers: { - ...xhrRequestHeaders, - Accept: formattedAcceptHeader, - }, + headers: generateWadoHeader(), errorInterceptor: errorHandler.getHTTPErrorHandler(), }; @@ -131,6 +137,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { studies: { mapParams: mapParams.bind(), search: async function(origParams) { + qidoDicomWebClient.headers = getAuthrorizationHeader(); const { studyInstanceUid, seriesInstanceUid, ...mappedParams } = mapParams(origParams, { supportsFuzzyMatching, @@ -151,6 +158,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { series: { // mapParams: mapParams.bind(), search: async function(studyInstanceUid) { + qidoDicomWebClient.headers = getAuthrorizationHeader(); const results = await seriesInStudy( qidoDicomWebClient, studyInstanceUid @@ -162,6 +170,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { }, instances: { search: (studyInstanceUid, queryParameters) => { + qidoDicomWebClient.headers = getAuthrorizationHeader(); qidoSearch.call( undefined, qidoDicomWebClient, @@ -188,6 +197,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { return getDirectURL({ wadoRoot, singlepart }, params); }, bulkDataURI: async ({ StudyInstanceUID, BulkDataURI }) => { + qidoDicomWebClient.headers = getAuthrorizationHeader(); const options = { multipart: false, BulkDataURI, @@ -235,12 +245,12 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { store: { dicom: async (dataset, request) => { + wadoDicomWebClient.headers = generateWadoHeader(); if (dataset instanceof ArrayBuffer) { const options = { datasets: [dataset], request, }; - await wadoDicomWebClient.storeInstances(options); } else { const meta = { @@ -278,7 +288,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { madeInClient ) => { const enableStudyLazyLoad = false; - + wadoDicomWebClient.headers = generateWadoHeader(); // data is all SOPInstanceUIDs const data = await retrieveStudyMetadata( wadoDicomWebClient, @@ -349,6 +359,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) { madeInClient = false ) => { const enableStudyLazyLoad = true; + wadoDicomWebClient.headers = generateWadoHeader(); // Get Series const { preLoadData: seriesSummaryMetadata,