Exemple #1
0
        public HttpResponseMessage CreateWadoRsResponse
        (
            IWadoRequestHeader request,
            IEnumerable <IWadoRsResponse> wadoResponses,
            MimeMediaType mimeType
        )
        {
            HttpResponseMessage response = new HttpResponseMessage( );


            if (wadoResponses == null || wadoResponses.FirstOrDefault( ) == null)
            {
                response.StatusCode = System.Net.HttpStatusCode.NotAcceptable;

                return(response);
            }
            if (!IsValidResponse(wadoResponses, out response))
            {
                return(response);
            }


            if (mimeType == MimeMediaTypes.Json)
            {
                return(GetJsonResponse(wadoResponses));
            }
            else
            {
                return(GetMultipartResponse(wadoResponses, mimeType));
            }
        }
        protected virtual IEnumerable <IWadoRsResponse> CreateRetrieveInstanceResponse
        (
            IWadoRequestHeader header,
            IObjectID objectID,
            out string mimeType
        )
        {
            List <IWadoRsResponse>          responses = new List <IWadoRsResponse> ( );
            MediaTypeWithQualityHeaderValue mediaType = null;


            mimeType = null;

            MimeMediaType jsMime = MimeMediaTypes.MultipartRelated;

            if (jsMime.IsIn(header.AcceptHeader, out mediaType))
            {
                mimeType = ProcessMultipartRequest(objectID, responses, mediaType);
            }
            //TODO: all requests for retrieve is multipart except for "metadata in json format"
            //e.g:
            //Instances:
            //Accept - A comma-separated list of representation schemes, in preference order, which will be accepted by the service in theresponse to this request. The types allowed for this request header are as follows:
            //multipart/related; type=application/dicom; [transfer-syntax={TransferSyntaxUID}]
            //Specifies that the response can be DICOM Instances encoded in PS3.10 format. If transfer-syntax is not specified the servercan freely choose which Transfer Syntax to use for each Instance.
            //multipart/related; type=application/octet-stream
            //Specifies that the response can be Little Endian uncompressed bulk data.
            //multipart/related; type={MediaType}
            //Specifies that the response can be pixel data encoded using a {MediaType} listed in Table 6.5-1 (including parameters).

            //Bulk Data:
            //multipart/related; type=application/octet-stream
            //multipart/related; type={MediaType}

            //metadata:
            //multipart/related; type=application/dicom+xml
            //application/json

            //else
            //if ( ((MimeMediaType)MimeMediaTypes.Json).IsIn (header.AcceptHeader, out mediaType))
            //{
            //    mimeType = ProcessJsonRequest ( objectID, responses ) ;
            //}
            //else
            //if ( ((MimeMediaType)MimeMediaTypes.Jpeg).IsIn (header.AcceptHeader, out mediaType))
            //{
            //    //.... and so on
            //}

            //return json metadata by default
            if (null == mimeType)
            {
                mimeType = ProcessJsonRequest(objectID, responses);
            }

            return(responses);
        }
Exemple #3
0
        public HttpResponseMessage CreateRetrieveInstancesResponse
        (
            IWadoRequestHeader request,
            IEnumerable <IWadoRsResponse> wadoResponses,
            MimeMediaType mimeType
        )
        {
            HttpResponseMessage response = null;

            if (!IsValidResponse(wadoResponses, out response))
            {
                return(response);
            }

            //if ( request.IsMultipart ( ) )
            {
                return(GetMultipartResponse(wadoResponses, mimeType));
            }
        }
        private string ProcessMultipartRequest
        (
            IObjectID objectID,
            List <IWadoRsResponse> responses,
            MediaTypeWithQualityHeaderValue mediaType
        )
        {
            var mediaTypeHeader = mediaType.Parameters.Where(n => n.Name == "type").FirstOrDefault();

            MimeMediaType requestedMimeType = (mediaTypeHeader != null) ? mediaTypeHeader.Value.Trim('"') : MimeMediaTypes.UncompressedData;


            foreach (IStorageLocation location in GetLocations(objectID, requestedMimeType))
            {
                IWadoRsResponse response = new WadoResponse(location, requestedMimeType);


                responses.Add(response);
            }

            return(requestedMimeType);
        }