public async Task <HttpResponseMessage> ProcessRequest ( IWebStoreRequest request, string studyInstanceUID ) { DicomAttributeCollection bodyContent = null; switch (request.MediaType) { //TODO: build the response here, { Successes.Add(objectMetadata), Failures.Add(objectMetadata), Create case MimeMediaTypes.DICOM: { bodyContent = await GetResponseDataset(request, studyInstanceUID); } break; case MimeMediaTypes.xmlDicom: { } break; case MimeMediaTypes.Json: { } break; default: { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } } if (null != bodyContent) { var result = new HttpResponseMessage(HttpStatusCode.OK); if (new MimeMediaType(MimeMediaTypes.Json).IsIn(request.AcceptHeader)) //this is not taking the "q" parameter { JsonDicomConverter converter = new JsonDicomConverter( ); result.Content = new StringContent(converter.Convert(bodyContent), System.Text.Encoding.UTF8, MimeMediaTypes.Json); } else { XmlDicomConverter xmlConverter = new XmlDicomConverter( ); result.Content = new StringContent(xmlConverter.Convert(bodyContent), System.Text.Encoding.UTF8, MimeMediaTypes.xmlDicom); } return(result); } else { return(new HttpResponseMessage(HttpStatusCode.BadRequest)); } }
private async Task <DicomAttributeCollection> GetResponseDataset(IWebStoreRequest request, string studyInstanceUID) { DicomAttributeCollection bodyContent = null; WadoStoreResponse response = new WadoStoreResponse(studyInstanceUID); foreach (var mediaContent in request.Contents) { Stream dicomStream = await mediaContent.ReadAsStreamAsync(); try { var result = _storageService.StoreDicom(dicomStream);//TODO:make this ASync?? response.AddResult(result); } catch (Exception ex) { response.AddResult(ex, dicomStream); } } bodyContent = response.GetResponseContent(); return(bodyContent); }