From: Piotr Kosko Date: Fri, 17 Apr 2015 09:15:46 +0000 (+0200) Subject: [Archive] Added support to options in ArchiveFile.add() method X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~148 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5bd309cbf5c1b6db5804fe0750f3fb57db98c6b6;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Archive] Added support to options in ArchiveFile.add() method [Feature] Options for ArchiveFile.add() method was not supported. Added support for destination, stripSourceDirectory and compressionLevel. [Verification] Code compiles without errors. TCT passrate increased to 98.11%. Change-Id: Iff1af6ef0e9e704b3820795b3c969d1c7ad331ff Signed-off-by: Piotr Kosko --- diff --git a/src/archive/archive_instance.cc b/src/archive/archive_instance.cc index c6227538..566d4dde 100644 --- a/src/archive/archive_instance.cc +++ b/src/archive/archive_instance.cc @@ -30,6 +30,15 @@ const std::string kPrivilegeFilesystemWrite = "http://tizen.org/privilege/files const std::string kWgtPackagePathName = "wgt-package"; const std::string kWgtPrivatePathName = "wgt-private"; const std::string kWgtPrivateTmpPathName = "wgt-private-tmp"; + +const std::string kArchiveFileEntryOptDest = "destination"; +const std::string kArchiveFileEntryOptStrip = "stripSourceDirectory"; +const std::string kArchiveFileEntryOptCompressionLevel = "compressionLevel"; + +const std::string kNoCompressionStr = "STORE"; +const std::string kFastCompressionStr = "FAST"; +const std::string kNormalCompressionStr = "NORMAL"; +const std::string kBestCompressionStr = "BEST"; } // namespace ArchiveInstance::ArchiveInstance() { @@ -222,6 +231,18 @@ void ArchiveInstance::Abort(const picojson::value& args, picojson::object& out) ReportSuccess(out); } +unsigned int ConvertStringToCompressionLevel(const std::string& level) { + if (kNoCompressionStr == level) { + return Z_NO_COMPRESSION; + } else if (kFastCompressionStr == level) { + return Z_BEST_SPEED; + } else if (kBestCompressionStr == level) { + return Z_BEST_COMPRESSION; + } else { + return Z_DEFAULT_COMPRESSION; + } +} + void ArchiveInstance::Add(const picojson::value& args, picojson::object& out) { LoggerD("Entered"); @@ -231,7 +252,7 @@ void ArchiveInstance::Add(const picojson::value& args, picojson::object& out) picojson::object data = args.get(JSON_DATA).get(); picojson::value v_source = data.at(PARAM_SOURCE_FILE); - //picojson::value v_options = data.at(PARAM_OPTIONS); + picojson::value v_options = data.at(PARAM_OPTIONS); picojson::value v_op_id = data.at(PARAM_OPERATION_ID); picojson::value v_handle = data.at(ARCHIVE_FILE_HANDLE); @@ -259,6 +280,30 @@ void ArchiveInstance::Add(const picojson::value& args, picojson::object& out) callback->setFileEntry(afep); callback->setBasePath(file_ptr->getNode()->getPath()->getPath()); + + // check and set options + LoggerD("Processing OPTIONS dictionary: %s", v_options.serialize().c_str()); + const auto& dest = v_options.get(kArchiveFileEntryOptDest); + if (dest.is()) { + std::string dic_destination = dest.get(); + LoggerD("Setting destination path to: \"%s\"",dic_destination.c_str()); + afep->setDestination(dic_destination); + } + + const auto& strip = v_options.get(kArchiveFileEntryOptStrip); + if (strip.is()) { + bool dic_strip = strip.get(); + LoggerD("Setting strip option to: %d", dic_strip); + afep->setStriped(dic_strip); + } + + const auto& level = v_options.get(kArchiveFileEntryOptCompressionLevel); + if (level.is()) { + std::string dic_compression_level = level.get(); + LoggerD("Setting compression level to: \"%s\"", dic_compression_level.c_str()); + afep->setCompressionLevel(ConvertStringToCompressionLevel(dic_compression_level)); + } + LoggerD("base path:%s base virt:%s", callback->getBasePath().c_str(), callback->getBaseVirtualPath().c_str());