Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi.cpp @ 291:4d7469f72a0b
embedding of dicom dictionaries
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 14 Dec 2012 15:15:48 +0100 |
parents | 4031f73fe0e4 |
children | f13eef8ce651 |
comparison
equal
deleted
inserted
replaced
290:b3322636b06d | 291:4d7469f72a0b |
---|---|
756 static void UploadDicomFile(RestApi::PostCall& call) | 756 static void UploadDicomFile(RestApi::PostCall& call) |
757 { | 757 { |
758 RETRIEVE_CONTEXT(call); | 758 RETRIEVE_CONTEXT(call); |
759 | 759 |
760 const std::string& postData = call.GetPostBody(); | 760 const std::string& postData = call.GetPostBody(); |
761 if (postData.size() == 0) | |
762 { | |
763 return; | |
764 } | |
761 | 765 |
762 LOG(INFO) << "Receiving a DICOM file of " << postData.size() << " bytes through HTTP"; | 766 LOG(INFO) << "Receiving a DICOM file of " << postData.size() << " bytes through HTTP"; |
763 | 767 |
764 // Prepare an input stream for the memory buffer | 768 DcmFileFormat dicomFile; |
765 DcmInputBufferStream is; | 769 |
766 if (postData.size() > 0) | 770 { |
767 { | 771 // Prepare an input stream for the memory buffer |
772 DcmInputBufferStream is; | |
768 is.setBuffer(&postData[0], postData.size()); | 773 is.setBuffer(&postData[0], postData.size()); |
769 } | 774 is.setEos(); |
770 is.setEos(); | 775 |
771 | 776 dicomFile.transferInit(); |
772 DcmFileFormat dicomFile; | 777 if (!dicomFile.read(is).good()) |
773 if (!dicomFile.read(is).good()) | 778 { |
774 { | 779 call.GetOutput().SignalError(Orthanc_HttpStatus_415_UnsupportedMediaType); |
775 call.GetOutput().SignalError(Orthanc_HttpStatus_415_UnsupportedMediaType); | 780 return; |
776 return; | 781 } |
782 dicomFile.loadAllDataIntoMemory(); | |
783 dicomFile.transferEnd(); | |
777 } | 784 } |
778 | 785 |
779 DicomMap dicomSummary; | 786 DicomMap dicomSummary; |
780 FromDcmtkBridge::Convert(dicomSummary, *dicomFile.getDataset()); | 787 FromDcmtkBridge::Convert(dicomSummary, *dicomFile.getDataset()); |
781 | 788 |
786 | 793 |
787 StoreStatus status = StoreStatus_Failure; | 794 StoreStatus status = StoreStatus_Failure; |
788 if (postData.size() > 0) | 795 if (postData.size() > 0) |
789 { | 796 { |
790 status = context.Store | 797 status = context.Store |
791 (reinterpret_cast<const char*>(&postData[0]), | 798 (reinterpret_cast<const char*>(&postData[0]), postData.size(), |
792 postData.size(), dicomSummary, dicomJson, ""); | 799 dicomSummary, dicomJson, ""); |
793 } | 800 } |
794 | 801 |
795 Json::Value result = Json::objectValue; | 802 Json::Value result = Json::objectValue; |
796 | 803 |
797 if (status != StoreStatus_Failure) | 804 if (status != StoreStatus_Failure) |
798 { | 805 { |