#include "content/content_manager.h"
+#include <media_content_internal.h>
#include <metadata_extractor.h>
#include <stdlib.h>
+#include <sys/stat.h>
#include <unistd.h>
#include <algorithm>
#include <cstring>
int ret;
char* tmpStr = NULL;
media_content_storage_e storage_type;
- time_t tmpDate;
// id
ret = media_folder_get_folder_id(folder, &tmpStr);
}
// directoryURI
+ std::string folder_path;
ret = media_folder_get_path(folder, &tmpStr);
if (ret == MEDIA_CONTENT_ERROR_NONE) {
if (tmpStr) {
o["directoryURI"] = picojson::value(std::string(tmpStr));
+ // folder_path value kept for modifiedDate property gathering
+ folder_path = tmpStr;
free(tmpStr);
tmpStr = NULL;
}
if (ret == MEDIA_CONTENT_ERROR_NONE) {
if (storage_type == MEDIA_CONTENT_STORAGE_INTERNAL) {
o["storageType"] = picojson::value(std::string("INTERNAL"));
- } else if (storage_type == MEDIA_CONTENT_STORAGE_EXTERNAL) {
+ } else {
+ LoggerD("storageType = %d, assuming EXTERNAL as storage type", storage_type);
o["storageType"] = picojson::value(std::string("EXTERNAL"));
- } else if (storage_type == MEDIA_CONTENT_STORAGE_CLOUD) {
- o["storageType"] = picojson::value(std::string("CLOUD"));
}
}
- // modifiedData
- ret = media_folder_get_modified_time(folder, &tmpDate);
- if (ret == MEDIA_CONTENT_ERROR_NONE) {
- o["modifiedDate"] = picojson::value(static_cast<double>(tmpDate));
+ // modifiedDate
+ struct stat stat_res;
+ if (stat(folder_path.c_str(), &stat_res) == 0) {
+ auto mod_time = stat_res.st_mtime;
+ o["modifiedDate"] = picojson::value(static_cast<double>(mod_time));
}
}
("Failed: media_folder_get_folder_id"));
return;
}
+ std::unique_ptr<char, decltype(&free)> id_ptr(id, &free);
ret = media_folder_get_name(folder, &name);
if (ret != MEDIA_CONTENT_ERROR_NONE) {
LogAndReportError(ContentManager::convertError(ret), out, ("Failed: media_folder_get_name"));
- free(id);
return;
}
+ std::unique_ptr<char, decltype(&free)> name_ptr(name, &free);
ret = media_folder_get_path(folder, &path);
if (ret != MEDIA_CONTENT_ERROR_NONE) {
LogAndReportError(ContentManager::convertError(ret), out, ("Failed: media_folder_get_path"));
- free(id);
- free(name);
return;
}
+ std::unique_ptr<char, decltype(&free)> path_ptr(path, &free);
- ret = media_folder_get_modified_time(folder, &date);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- LogAndReportError(ContentManager::convertError(ret), out, ("Failed: media_folder_get_path"));
- free(id);
- free(name);
- free(path);
+ struct stat stat_res;
+ ret = stat(path, &stat_res);
+ if (0 != ret) {
+ LogAndReportError(ContentManager::convertError(errno), out, ("Failed: stat"));
return;
}
+ date = stat_res.st_mtime;
ret = media_folder_get_storage_type(folder, &storageType);
if (ret != MEDIA_CONTENT_ERROR_NONE) {
- free(id);
- free(name);
- free(path);
LogAndReportError(ContentManager::convertError(ret), out,
("Failed: media_folder_get_storage_type"));
return;
}
(*out)["modifiedDate"] = picojson::value(static_cast<double>(date));
-
- free(name);
- free(id);
- free(path);
}
static bool media_foreach_directory_cb(media_folder_h folder, void* user_data) {
}
}
-int ContentManager::update(picojson::value args) {
+int ContentManager::update(const picojson::value& args) {
ScopeLogger();
int ret;
return ret;
}
-int ContentManager::updateBatch(picojson::value args) {
+int ContentManager::updateBatch(const picojson::value& args) {
ScopeLogger();
int ret = 0;
std::vector<picojson::value> contents = args.get("contents").get<picojson::array>();