# HG changeset patch # User Sebastien Jodogne # Date 1650895747 -7200 # Node ID 1e000761eb626d939e04bfea74e7e3e0435c9488 # Parent ef6ddcfed855a05d1cd8f7f33ae28b62100283f3 added gzip compression of nifti diff -r ef6ddcfed855 -r 1e000761eb62 Sources/Plugin/Plugin.cpp --- a/Sources/Plugin/Plugin.cpp Mon Apr 25 14:57:58 2022 +0200 +++ b/Sources/Plugin/Plugin.cpp Mon Apr 25 16:09:07 2022 +0200 @@ -149,7 +149,22 @@ return instance.release(); #endif -} +} + + +static bool HasBooleanFlag(const OrthancPluginHttpRequest* request, + const std::string& flag) +{ + for (uint32_t i = 0; i < request->getCount; i++) + { + if (std::string(request->getKeys[i]) == flag) + { + return true; + } + } + + return false; +} void SeriesToNifti(OrthancPluginRestOutput* output, @@ -196,10 +211,18 @@ } } + const bool compress = HasBooleanFlag(request, "compress"); + std::string nifti; - CreateNifti(nifti, collection, false /* todo - compress */); + CreateNifti(nifti, collection, compress); - const std::string contentDisposition = "filename=\"" + seriesId + ".nii\""; + std::string filename = seriesId + ".nii"; + if (compress) + { + filename += ".gz"; + } + + const std::string contentDisposition = "filename=\"" + filename + "\""; OrthancPluginSetHttpHeader(context, output, "Content-Disposition", contentDisposition.c_str()); OrthancPluginAnswerBuffer(context, output, nifti.c_str(), nifti.size(), "application/octet-stream"); @@ -224,10 +247,18 @@ Neuro::DicomInstancesCollection collection; collection.AddInstance(AcquireInstance(instanceId), instanceId); + const bool compress = HasBooleanFlag(request, "compress"); + std::string nifti; - CreateNifti(nifti, collection, false /* todo - compress */); + CreateNifti(nifti, collection, compress); - const std::string contentDisposition = "filename=\"" + instanceId + ".nii\""; + std::string filename = instanceId + ".nii"; + if (compress) + { + filename += ".gz"; + } + + const std::string contentDisposition = "filename=\"" + filename + "\""; OrthancPluginSetHttpHeader(context, output, "Content-Disposition", contentDisposition.c_str()); OrthancPluginAnswerBuffer(context, output, nifti.c_str(), nifti.size(), "application/octet-stream");