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); }
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); }