var privUtils_ = xwalk.utils;
var validator_ = privUtils_.validator;
-var converter_ = privUtils_.converter;
var types_ = validator_.Types;
-var T_ = privUtils_.type;
var native_ = new xwalk.utils.NativeManager(extension);
var MetadataType = {
var args = validator_.validateArgs(arguments, [
{
name: 'path',
- type: validator_.Types.STRING,
+ type: types_.STRING,
optional: false,
nullable: false
}
function MetadataFileHandle(data) {
Object.defineProperties(this, {
_id: { value: data.id, writable: false, enumerable: false },
- path: { value: data.path, writable: false, enumerable: true }
+ uri: { value: data.uri, writable: false, enumerable: true }
});
}
}
]);
var data = {
- path: this.path,
+ uri: this.uri,
id: this._id,
type: args.type
};
}
}
+std::string ltrim(const std::string& s) {
+ ScopeLogger();
+ std::string str = s;
+ std::string::iterator i;
+ for (i = str.begin(); i != str.end(); ++i) {
+ if (!isspace(*i)) {
+ break;
+ }
+ }
+ str.erase(str.begin(), i);
+ return str;
+}
+
+std::string convertUriToPath(const std::string& str) {
+ const std::string URI_PREFIX = "file://";
+ ScopeLogger();
+ std::string path = ltrim(str);
+ std::string prefix = path.substr(0, URI_PREFIX.size());
+
+ if (prefix == URI_PREFIX) {
+ return path.substr(URI_PREFIX.size());
+ } else {
+ return path;
+ }
+}
+
MetadataFileHandle::MetadataFileHandle(int id) : handle_(nullptr), id_(id) {
ScopeLogger();
}
-// 'this' owns a handle_, and path_ and invalidates 'o'
+// 'this' owns a handle_, and uri_ and invalidates 'o'
MetadataFileHandle::MetadataFileHandle(MetadataFileHandle&& o)
- : handle_(nullptr), id_(o.id_), path_(std::move(o.path_)) {
+ : handle_(nullptr), id_(o.id_), uri_(std::move(o.uri_)) {
ScopeLogger();
handle_ = o.handle_;
o.handle_ = nullptr;
MetadataFileHandle& MetadataFileHandle::operator=(MetadataFileHandle&& o) {
ScopeLogger();
- // 'this' owns a handle_, and path_ and invalidates 'o'
+ // 'this' owns a handle_, and uri_ and invalidates 'o'
handle_ = o.handle_;
o.handle_ = nullptr;
id_ = o.id_;
- path_ = std::move(o.path_);
+ uri_ = std::move(o.uri_);
return *this;
}
}
}
-PlatformResult MetadataFileHandle::Initialize(const std::string& path) {
+PlatformResult MetadataFileHandle::Initialize(const std::string& uri) {
ScopeLogger();
+ auto path = convertUriToPath(uri);
+
int result = metadata_extractor_create(&handle_);
if (METADATA_EXTRACTOR_ERROR_NONE != result) {
LoggerE("Error during creation of metadata extractor handle, object is not valid: %d", result);
LoggerE("Error during path set, object is not valid: %d", result);
return convertErrorCode(result);
}
- this->path_ = path;
+ this->uri_ = uri;
return PlatformResult(ErrorCode::NO_ERROR);
}
picojson::value result = picojson::value(picojson::object());
picojson::object& result_obj = result.get<picojson::object>();
result_obj.insert(std::make_pair("id", picojson::value((double)id_)));
- result_obj.insert(std::make_pair("path", picojson::value(path_)));
+ result_obj.insert(std::make_pair("uri", picojson::value(uri_)));
return result;
}
picojson::value ToJSON();
- common::PlatformResult Initialize(const std::string& path);
+ common::PlatformResult Initialize(const std::string& uri);
common::PlatformResult Get(const std::string& type, std::string* result);
private:
metadata_extractor_h handle_;
int id_;
- std::string path_;
+ std::string uri_;
};
} // namespace metadata
using namespace common;
-const std::string URI_PREFIX = "file://";
-
-std::string ltrim(const std::string& s) {
- ScopeLogger();
- std::string str = s;
- std::string::iterator i;
- for (i = str.begin(); i != str.end(); ++i) {
- if (!isspace(*i)) {
- break;
- }
- }
- str.erase(str.begin(), i);
- return str;
-}
-
-std::string convertUriToPath(const std::string& str) {
- ScopeLogger();
- std::string path = ltrim(str);
- std::string prefix = path.substr(0, URI_PREFIX.size());
-
- if (prefix == URI_PREFIX) {
- return path.substr(URI_PREFIX.size());
- } else {
- return path;
- }
-}
-
MetadataInstance::MetadataInstance() : next_handle_id_(1) {
ScopeLogger();
using std::placeholders::_1;
picojson::object& out) {
ScopeLogger();
const std::string& uri = args.get("uri").get<std::string>();
- auto path = convertUriToPath(uri);
auto m = MetadataFileHandle{next_handle_id_};
- auto res = m.Initialize(path);
+ auto res = m.Initialize(uri);
if (!res) {
LogAndReportError(res, &out);
return;
void MetadataInstance::MetadataFileHandleGet(const picojson::value& args, picojson::object& out) {
ScopeLogger();
- const std::string& path = args.get("path").get<std::string>();
+ const std::string& uri = args.get("uri").get<std::string>();
const int id = static_cast<int>(args.get("id").get<double>());
const std::string& type = args.get("type").get<std::string>();
- LoggerD("File: %s getting metadata type: %s", path.c_str(), type.c_str());
+ LoggerD("File: %s getting metadata type: %s", uri.c_str(), type.c_str());
std::string value;
LoggerD("Handle does not exist in map, creating new one");
// re- create handle
auto m = MetadataFileHandle{id};
- auto res = m.Initialize(path);
+ auto res = m.Initialize(uri);
if (!res) {
// if everything works fine with a file, handle should be created successfully, as this is a
// re-creation. In case of errors, just return an AbortError