Cordova plugin file und file-transfer geadded
This commit is contained in:
117
plugins/cordova-plugin-file/www/DirectoryEntry.js
vendored
Normal file
117
plugins/cordova-plugin-file/www/DirectoryEntry.js
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var argscheck = require('cordova/argscheck'),
|
||||
utils = require('cordova/utils'),
|
||||
exec = require('cordova/exec'),
|
||||
Entry = require('./Entry'),
|
||||
FileError = require('./FileError'),
|
||||
DirectoryReader = require('./DirectoryReader');
|
||||
|
||||
/**
|
||||
* An interface representing a directory on the file system.
|
||||
*
|
||||
* {boolean} isFile always false (readonly)
|
||||
* {boolean} isDirectory always true (readonly)
|
||||
* {DOMString} name of the directory, excluding the path leading to it (readonly)
|
||||
* {DOMString} fullPath the absolute full path to the directory (readonly)
|
||||
* {FileSystem} filesystem on which the directory resides (readonly)
|
||||
*/
|
||||
var DirectoryEntry = function(name, fullPath, fileSystem, nativeURL) {
|
||||
|
||||
// add trailing slash if it is missing
|
||||
if ((fullPath) && !/\/$/.test(fullPath)) {
|
||||
fullPath += "/";
|
||||
}
|
||||
// add trailing slash if it is missing
|
||||
if (nativeURL && !/\/$/.test(nativeURL)) {
|
||||
nativeURL += "/";
|
||||
}
|
||||
DirectoryEntry.__super__.constructor.call(this, false, true, name, fullPath, fileSystem, nativeURL);
|
||||
};
|
||||
|
||||
utils.extend(DirectoryEntry, Entry);
|
||||
|
||||
/**
|
||||
* Creates a new DirectoryReader to read entries from this directory
|
||||
*/
|
||||
DirectoryEntry.prototype.createReader = function() {
|
||||
return new DirectoryReader(this.toInternalURL());
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates or looks up a directory
|
||||
*
|
||||
* @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory
|
||||
* @param {Flags} options to create or exclusively create the directory
|
||||
* @param {Function} successCallback is called with the new entry
|
||||
* @param {Function} errorCallback is called with a FileError
|
||||
*/
|
||||
DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
|
||||
argscheck.checkArgs('sOFF', 'DirectoryEntry.getDirectory', arguments);
|
||||
var fs = this.filesystem;
|
||||
var win = successCallback && function(result) {
|
||||
var entry = new DirectoryEntry(result.name, result.fullPath, fs, result.nativeURL);
|
||||
successCallback(entry);
|
||||
};
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(win, fail, "File", "getDirectory", [this.toInternalURL(), path, options]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Deletes a directory and all of it's contents
|
||||
*
|
||||
* @param {Function} successCallback is called with no parameters
|
||||
* @param {Function} errorCallback is called with a FileError
|
||||
*/
|
||||
DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) {
|
||||
argscheck.checkArgs('FF', 'DirectoryEntry.removeRecursively', arguments);
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(successCallback, fail, "File", "removeRecursively", [this.toInternalURL()]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates or looks up a file
|
||||
*
|
||||
* @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file
|
||||
* @param {Flags} options to create or exclusively create the file
|
||||
* @param {Function} successCallback is called with the new entry
|
||||
* @param {Function} errorCallback is called with a FileError
|
||||
*/
|
||||
DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
|
||||
argscheck.checkArgs('sOFF', 'DirectoryEntry.getFile', arguments);
|
||||
var fs = this.filesystem;
|
||||
var win = successCallback && function(result) {
|
||||
var FileEntry = require('./FileEntry');
|
||||
var entry = new FileEntry(result.name, result.fullPath, fs, result.nativeURL);
|
||||
successCallback(entry);
|
||||
};
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(win, fail, "File", "getFile", [this.toInternalURL(), path, options]);
|
||||
};
|
||||
|
||||
module.exports = DirectoryEntry;
|
||||
73
plugins/cordova-plugin-file/www/DirectoryReader.js
vendored
Normal file
73
plugins/cordova-plugin-file/www/DirectoryReader.js
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec'),
|
||||
FileError = require('./FileError') ;
|
||||
|
||||
/**
|
||||
* An interface that lists the files and directories in a directory.
|
||||
*/
|
||||
function DirectoryReader(localURL) {
|
||||
this.localURL = localURL || null;
|
||||
this.hasReadEntries = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of entries from a directory.
|
||||
*
|
||||
* @param {Function} successCallback is called with a list of entries
|
||||
* @param {Function} errorCallback is called with a FileError
|
||||
*/
|
||||
DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) {
|
||||
// If we've already read and passed on this directory's entries, return an empty list.
|
||||
if (this.hasReadEntries) {
|
||||
successCallback([]);
|
||||
return;
|
||||
}
|
||||
var reader = this;
|
||||
var win = typeof successCallback !== 'function' ? null : function(result) {
|
||||
var retVal = [];
|
||||
for (var i=0; i<result.length; i++) {
|
||||
var entry = null;
|
||||
if (result[i].isDirectory) {
|
||||
entry = new (require('./DirectoryEntry'))();
|
||||
}
|
||||
else if (result[i].isFile) {
|
||||
entry = new (require('./FileEntry'))();
|
||||
}
|
||||
entry.isDirectory = result[i].isDirectory;
|
||||
entry.isFile = result[i].isFile;
|
||||
entry.name = result[i].name;
|
||||
entry.fullPath = result[i].fullPath;
|
||||
entry.filesystem = new (require('./FileSystem'))(result[i].filesystemName);
|
||||
entry.nativeURL = result[i].nativeURL;
|
||||
retVal.push(entry);
|
||||
}
|
||||
reader.hasReadEntries = true;
|
||||
successCallback(retVal);
|
||||
};
|
||||
var fail = typeof errorCallback !== 'function' ? null : function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(win, fail, "File", "readEntries", [this.localURL]);
|
||||
};
|
||||
|
||||
module.exports = DirectoryReader;
|
||||
260
plugins/cordova-plugin-file/www/Entry.js
vendored
Normal file
260
plugins/cordova-plugin-file/www/Entry.js
vendored
Normal file
@@ -0,0 +1,260 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var argscheck = require('cordova/argscheck'),
|
||||
exec = require('cordova/exec'),
|
||||
FileError = require('./FileError'),
|
||||
Metadata = require('./Metadata');
|
||||
|
||||
/**
|
||||
* Represents a file or directory on the local file system.
|
||||
*
|
||||
* @param isFile
|
||||
* {boolean} true if Entry is a file (readonly)
|
||||
* @param isDirectory
|
||||
* {boolean} true if Entry is a directory (readonly)
|
||||
* @param name
|
||||
* {DOMString} name of the file or directory, excluding the path
|
||||
* leading to it (readonly)
|
||||
* @param fullPath
|
||||
* {DOMString} the absolute full path to the file or directory
|
||||
* (readonly)
|
||||
* @param fileSystem
|
||||
* {FileSystem} the filesystem on which this entry resides
|
||||
* (readonly)
|
||||
* @param nativeURL
|
||||
* {DOMString} an alternate URL which can be used by native
|
||||
* webview controls, for example media players.
|
||||
* (optional, readonly)
|
||||
*/
|
||||
function Entry(isFile, isDirectory, name, fullPath, fileSystem, nativeURL) {
|
||||
this.isFile = !!isFile;
|
||||
this.isDirectory = !!isDirectory;
|
||||
this.name = name || '';
|
||||
this.fullPath = fullPath || '';
|
||||
this.filesystem = fileSystem || null;
|
||||
this.nativeURL = nativeURL || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up the metadata of the entry.
|
||||
*
|
||||
* @param successCallback
|
||||
* {Function} is called with a Metadata object
|
||||
* @param errorCallback
|
||||
* {Function} is called with a FileError
|
||||
*/
|
||||
Entry.prototype.getMetadata = function(successCallback, errorCallback) {
|
||||
argscheck.checkArgs('FF', 'Entry.getMetadata', arguments);
|
||||
var success = successCallback && function(entryMetadata) {
|
||||
var metadata = new Metadata({
|
||||
size: entryMetadata.size,
|
||||
modificationTime: entryMetadata.lastModifiedDate
|
||||
});
|
||||
successCallback(metadata);
|
||||
};
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(success, fail, "File", "getFileMetadata", [this.toInternalURL()]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the metadata of the entry.
|
||||
*
|
||||
* @param successCallback
|
||||
* {Function} is called with a Metadata object
|
||||
* @param errorCallback
|
||||
* {Function} is called with a FileError
|
||||
* @param metadataObject
|
||||
* {Object} keys and values to set
|
||||
*/
|
||||
Entry.prototype.setMetadata = function(successCallback, errorCallback, metadataObject) {
|
||||
argscheck.checkArgs('FFO', 'Entry.setMetadata', arguments);
|
||||
exec(successCallback, errorCallback, "File", "setMetadata", [this.toInternalURL(), metadataObject]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Move a file or directory to a new location.
|
||||
*
|
||||
* @param parent
|
||||
* {DirectoryEntry} the directory to which to move this entry
|
||||
* @param newName
|
||||
* {DOMString} new name of the entry, defaults to the current name
|
||||
* @param successCallback
|
||||
* {Function} called with the new DirectoryEntry object
|
||||
* @param errorCallback
|
||||
* {Function} called with a FileError
|
||||
*/
|
||||
Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
|
||||
argscheck.checkArgs('oSFF', 'Entry.moveTo', arguments);
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
var filesystem = this.filesystem,
|
||||
srcURL = this.toInternalURL(),
|
||||
// entry name
|
||||
name = newName || this.name,
|
||||
success = function(entry) {
|
||||
if (entry) {
|
||||
if (successCallback) {
|
||||
// create appropriate Entry object
|
||||
var newFSName = entry.filesystemName || (entry.filesystem && entry.filesystem.name);
|
||||
var fs = newFSName ? new FileSystem(newFSName, { name: "", fullPath: "/" }) : new FileSystem(parent.filesystem.name, { name: "", fullPath: "/" });
|
||||
var result = (entry.isDirectory) ? new (require('./DirectoryEntry'))(entry.name, entry.fullPath, fs, entry.nativeURL) : new (require('cordova-plugin-file.FileEntry'))(entry.name, entry.fullPath, fs, entry.nativeURL);
|
||||
successCallback(result);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// no Entry object returned
|
||||
fail && fail(FileError.NOT_FOUND_ERR);
|
||||
}
|
||||
};
|
||||
|
||||
// copy
|
||||
exec(success, fail, "File", "moveTo", [srcURL, parent.toInternalURL(), name]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Copy a directory to a different location.
|
||||
*
|
||||
* @param parent
|
||||
* {DirectoryEntry} the directory to which to copy the entry
|
||||
* @param newName
|
||||
* {DOMString} new name of the entry, defaults to the current name
|
||||
* @param successCallback
|
||||
* {Function} called with the new Entry object
|
||||
* @param errorCallback
|
||||
* {Function} called with a FileError
|
||||
*/
|
||||
Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
|
||||
argscheck.checkArgs('oSFF', 'Entry.copyTo', arguments);
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
var filesystem = this.filesystem,
|
||||
srcURL = this.toInternalURL(),
|
||||
// entry name
|
||||
name = newName || this.name,
|
||||
// success callback
|
||||
success = function(entry) {
|
||||
if (entry) {
|
||||
if (successCallback) {
|
||||
// create appropriate Entry object
|
||||
var newFSName = entry.filesystemName || (entry.filesystem && entry.filesystem.name);
|
||||
var fs = newFSName ? new FileSystem(newFSName, { name: "", fullPath: "/" }) : new FileSystem(parent.filesystem.name, { name: "", fullPath: "/" });
|
||||
var result = (entry.isDirectory) ? new (require('./DirectoryEntry'))(entry.name, entry.fullPath, fs, entry.nativeURL) : new (require('cordova-plugin-file.FileEntry'))(entry.name, entry.fullPath, fs, entry.nativeURL);
|
||||
successCallback(result);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// no Entry object returned
|
||||
fail && fail(FileError.NOT_FOUND_ERR);
|
||||
}
|
||||
};
|
||||
|
||||
// copy
|
||||
exec(success, fail, "File", "copyTo", [srcURL, parent.toInternalURL(), name]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Return a URL that can be passed across the bridge to identify this entry.
|
||||
*/
|
||||
Entry.prototype.toInternalURL = function() {
|
||||
if (this.filesystem && this.filesystem.__format__) {
|
||||
return this.filesystem.__format__(this.fullPath, this.nativeURL);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Return a URL that can be used to identify this entry.
|
||||
* Use a URL that can be used to as the src attribute of a <video> or
|
||||
* <audio> tag. If that is not possible, construct a cdvfile:// URL.
|
||||
*/
|
||||
Entry.prototype.toURL = function() {
|
||||
if (this.nativeURL) {
|
||||
return this.nativeURL;
|
||||
}
|
||||
// fullPath attribute may contain the full URL in the case that
|
||||
// toInternalURL fails.
|
||||
return this.toInternalURL() || "file://localhost" + this.fullPath;
|
||||
};
|
||||
|
||||
/**
|
||||
* Backwards-compatibility: In v1.0.0 - 1.0.2, .toURL would only return a
|
||||
* cdvfile:// URL, and this method was necessary to obtain URLs usable by the
|
||||
* webview.
|
||||
* See CB-6051, CB-6106, CB-6117, CB-6152, CB-6199, CB-6201, CB-6243, CB-6249,
|
||||
* and CB-6300.
|
||||
*/
|
||||
Entry.prototype.toNativeURL = function() {
|
||||
console.log("DEPRECATED: Update your code to use 'toURL'");
|
||||
return this.toURL();
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a URI that can be used to identify this entry.
|
||||
*
|
||||
* @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
|
||||
* @return uri
|
||||
*/
|
||||
Entry.prototype.toURI = function(mimeType) {
|
||||
console.log("DEPRECATED: Update your code to use 'toURL'");
|
||||
return this.toURL();
|
||||
};
|
||||
|
||||
/**
|
||||
* Remove a file or directory. It is an error to attempt to delete a
|
||||
* directory that is not empty. It is an error to attempt to delete a
|
||||
* root directory of a file system.
|
||||
*
|
||||
* @param successCallback {Function} called with no parameters
|
||||
* @param errorCallback {Function} called with a FileError
|
||||
*/
|
||||
Entry.prototype.remove = function(successCallback, errorCallback) {
|
||||
argscheck.checkArgs('FF', 'Entry.remove', arguments);
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(successCallback, fail, "File", "remove", [this.toInternalURL()]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Look up the parent DirectoryEntry of this entry.
|
||||
*
|
||||
* @param successCallback {Function} called with the parent DirectoryEntry object
|
||||
* @param errorCallback {Function} called with a FileError
|
||||
*/
|
||||
Entry.prototype.getParent = function(successCallback, errorCallback) {
|
||||
argscheck.checkArgs('FF', 'Entry.getParent', arguments);
|
||||
var fs = this.filesystem;
|
||||
var win = successCallback && function(result) {
|
||||
var DirectoryEntry = require('./DirectoryEntry');
|
||||
var entry = new DirectoryEntry(result.name, result.fullPath, fs, result.nativeURL);
|
||||
successCallback(entry);
|
||||
};
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(win, fail, "File", "getParent", [this.toInternalURL()]);
|
||||
};
|
||||
|
||||
module.exports = Entry;
|
||||
79
plugins/cordova-plugin-file/www/File.js
vendored
Normal file
79
plugins/cordova-plugin-file/www/File.js
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* name {DOMString} name of the file, without path information
|
||||
* fullPath {DOMString} the full path of the file, including the name
|
||||
* type {DOMString} mime type
|
||||
* lastModifiedDate {Date} last modified date
|
||||
* size {Number} size of the file in bytes
|
||||
*/
|
||||
|
||||
var File = function(name, localURL, type, lastModifiedDate, size){
|
||||
this.name = name || '';
|
||||
this.localURL = localURL || null;
|
||||
this.type = type || null;
|
||||
this.lastModified = lastModifiedDate || null;
|
||||
// For backwards compatibility, store the timestamp in lastModifiedDate as well
|
||||
this.lastModifiedDate = lastModifiedDate || null;
|
||||
this.size = size || 0;
|
||||
|
||||
// These store the absolute start and end for slicing the file.
|
||||
this.start = 0;
|
||||
this.end = this.size;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a "slice" of the file. Since Cordova Files don't contain the actual
|
||||
* content, this really returns a File with adjusted start and end.
|
||||
* Slices of slices are supported.
|
||||
* start {Number} The index at which to start the slice (inclusive).
|
||||
* end {Number} The index at which to end the slice (exclusive).
|
||||
*/
|
||||
File.prototype.slice = function(start, end) {
|
||||
var size = this.end - this.start;
|
||||
var newStart = 0;
|
||||
var newEnd = size;
|
||||
if (arguments.length) {
|
||||
if (start < 0) {
|
||||
newStart = Math.max(size + start, 0);
|
||||
} else {
|
||||
newStart = Math.min(size, start);
|
||||
}
|
||||
}
|
||||
|
||||
if (arguments.length >= 2) {
|
||||
if (end < 0) {
|
||||
newEnd = Math.max(size + end, 0);
|
||||
} else {
|
||||
newEnd = Math.min(end, size);
|
||||
}
|
||||
}
|
||||
|
||||
var newFile = new File(this.name, this.localURL, this.type, this.lastModified, this.size);
|
||||
newFile.start = this.start + newStart;
|
||||
newFile.end = this.start + newEnd;
|
||||
return newFile;
|
||||
};
|
||||
|
||||
|
||||
module.exports = File;
|
||||
81
plugins/cordova-plugin-file/www/FileEntry.js
vendored
Normal file
81
plugins/cordova-plugin-file/www/FileEntry.js
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var utils = require('cordova/utils'),
|
||||
exec = require('cordova/exec'),
|
||||
Entry = require('./Entry'),
|
||||
FileWriter = require('./FileWriter'),
|
||||
File = require('./File'),
|
||||
FileError = require('./FileError');
|
||||
|
||||
/**
|
||||
* An interface representing a file on the file system.
|
||||
*
|
||||
* {boolean} isFile always true (readonly)
|
||||
* {boolean} isDirectory always false (readonly)
|
||||
* {DOMString} name of the file, excluding the path leading to it (readonly)
|
||||
* {DOMString} fullPath the absolute full path to the file (readonly)
|
||||
* {FileSystem} filesystem on which the file resides (readonly)
|
||||
*/
|
||||
var FileEntry = function(name, fullPath, fileSystem, nativeURL) {
|
||||
FileEntry.__super__.constructor.apply(this, [true, false, name, fullPath, fileSystem, nativeURL]);
|
||||
};
|
||||
|
||||
utils.extend(FileEntry, Entry);
|
||||
|
||||
/**
|
||||
* Creates a new FileWriter associated with the file that this FileEntry represents.
|
||||
*
|
||||
* @param {Function} successCallback is called with the new FileWriter
|
||||
* @param {Function} errorCallback is called with a FileError
|
||||
*/
|
||||
FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
|
||||
this.file(function(filePointer) {
|
||||
var writer = new FileWriter(filePointer);
|
||||
|
||||
if (writer.localURL === null || writer.localURL === "") {
|
||||
errorCallback && errorCallback(new FileError(FileError.INVALID_STATE_ERR));
|
||||
} else {
|
||||
successCallback && successCallback(writer);
|
||||
}
|
||||
}, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a File that represents the current state of the file that this FileEntry represents.
|
||||
*
|
||||
* @param {Function} successCallback is called with the new File object
|
||||
* @param {Function} errorCallback is called with a FileError
|
||||
*/
|
||||
FileEntry.prototype.file = function(successCallback, errorCallback) {
|
||||
var localURL = this.toInternalURL();
|
||||
var win = successCallback && function(f) {
|
||||
var file = new File(f.name, localURL, f.type, f.lastModifiedDate, f.size);
|
||||
successCallback(file);
|
||||
};
|
||||
var fail = errorCallback && function(code) {
|
||||
errorCallback(new FileError(code));
|
||||
};
|
||||
exec(win, fail, "File", "getFileMetadata", [localURL]);
|
||||
};
|
||||
|
||||
|
||||
module.exports = FileEntry;
|
||||
46
plugins/cordova-plugin-file/www/FileError.js
vendored
Normal file
46
plugins/cordova-plugin-file/www/FileError.js
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* FileError
|
||||
*/
|
||||
function FileError(error) {
|
||||
this.code = error || null;
|
||||
}
|
||||
|
||||
// File error codes
|
||||
// Found in DOMException
|
||||
FileError.NOT_FOUND_ERR = 1;
|
||||
FileError.SECURITY_ERR = 2;
|
||||
FileError.ABORT_ERR = 3;
|
||||
|
||||
// Added by File API specification
|
||||
FileError.NOT_READABLE_ERR = 4;
|
||||
FileError.ENCODING_ERR = 5;
|
||||
FileError.NO_MODIFICATION_ALLOWED_ERR = 6;
|
||||
FileError.INVALID_STATE_ERR = 7;
|
||||
FileError.SYNTAX_ERR = 8;
|
||||
FileError.INVALID_MODIFICATION_ERR = 9;
|
||||
FileError.QUOTA_EXCEEDED_ERR = 10;
|
||||
FileError.TYPE_MISMATCH_ERR = 11;
|
||||
FileError.PATH_EXISTS_ERR = 12;
|
||||
|
||||
module.exports = FileError;
|
||||
390
plugins/cordova-plugin-file/www/FileReader.js
vendored
Normal file
390
plugins/cordova-plugin-file/www/FileReader.js
vendored
Normal file
@@ -0,0 +1,390 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec'),
|
||||
modulemapper = require('cordova/modulemapper'),
|
||||
utils = require('cordova/utils'),
|
||||
File = require('./File'),
|
||||
FileError = require('./FileError'),
|
||||
ProgressEvent = require('./ProgressEvent'),
|
||||
origFileReader = modulemapper.getOriginalSymbol(window, 'FileReader');
|
||||
|
||||
/**
|
||||
* This class reads the mobile device file system.
|
||||
*
|
||||
* For Android:
|
||||
* The root directory is the root of the file system.
|
||||
* To read from the SD card, the file name is "sdcard/my_file.txt"
|
||||
* @constructor
|
||||
*/
|
||||
var FileReader = function() {
|
||||
this._readyState = 0;
|
||||
this._error = null;
|
||||
this._result = null;
|
||||
this._localURL = '';
|
||||
this._realReader = origFileReader ? new origFileReader() : {};
|
||||
};
|
||||
|
||||
// States
|
||||
FileReader.EMPTY = 0;
|
||||
FileReader.LOADING = 1;
|
||||
FileReader.DONE = 2;
|
||||
|
||||
utils.defineGetter(FileReader.prototype, 'readyState', function() {
|
||||
return this._localURL ? this._readyState : this._realReader.readyState;
|
||||
});
|
||||
|
||||
utils.defineGetter(FileReader.prototype, 'error', function() {
|
||||
return this._localURL ? this._error: this._realReader.error;
|
||||
});
|
||||
|
||||
utils.defineGetter(FileReader.prototype, 'result', function() {
|
||||
return this._localURL ? this._result: this._realReader.result;
|
||||
});
|
||||
|
||||
function defineEvent(eventName) {
|
||||
utils.defineGetterSetter(FileReader.prototype, eventName, function() {
|
||||
return this._realReader[eventName] || null;
|
||||
}, function(value) {
|
||||
this._realReader[eventName] = value;
|
||||
});
|
||||
}
|
||||
defineEvent('onloadstart'); // When the read starts.
|
||||
defineEvent('onprogress'); // While reading (and decoding) file or fileBlob data, and reporting partial file data (progress.loaded/progress.total)
|
||||
defineEvent('onload'); // When the read has successfully completed.
|
||||
defineEvent('onerror'); // When the read has failed (see errors).
|
||||
defineEvent('onloadend'); // When the request has completed (either in success or failure).
|
||||
defineEvent('onabort'); // When the read has been aborted. For instance, by invoking the abort() method.
|
||||
|
||||
function initRead(reader, file) {
|
||||
// Already loading something
|
||||
if (reader.readyState == FileReader.LOADING) {
|
||||
throw new FileError(FileError.INVALID_STATE_ERR);
|
||||
}
|
||||
|
||||
reader._result = null;
|
||||
reader._error = null;
|
||||
reader._readyState = FileReader.LOADING;
|
||||
|
||||
if (typeof file.localURL == 'string') {
|
||||
reader._localURL = file.localURL;
|
||||
} else {
|
||||
reader._localURL = '';
|
||||
return true;
|
||||
}
|
||||
|
||||
reader.onloadstart && reader.onloadstart(new ProgressEvent("loadstart", {target:reader}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Abort reading file.
|
||||
*/
|
||||
FileReader.prototype.abort = function() {
|
||||
if (origFileReader && !this._localURL) {
|
||||
return this._realReader.abort();
|
||||
}
|
||||
this._result = null;
|
||||
|
||||
if (this._readyState == FileReader.DONE || this._readyState == FileReader.EMPTY) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._readyState = FileReader.DONE;
|
||||
|
||||
// If abort callback
|
||||
if (typeof this.onabort === 'function') {
|
||||
this.onabort(new ProgressEvent('abort', {target:this}));
|
||||
}
|
||||
// If load end callback
|
||||
if (typeof this.onloadend === 'function') {
|
||||
this.onloadend(new ProgressEvent('loadend', {target:this}));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Read text file.
|
||||
*
|
||||
* @param file {File} File object containing file properties
|
||||
* @param encoding [Optional] (see http://www.iana.org/assignments/character-sets)
|
||||
*/
|
||||
FileReader.prototype.readAsText = function(file, encoding) {
|
||||
if (initRead(this, file)) {
|
||||
return this._realReader.readAsText(file, encoding);
|
||||
}
|
||||
|
||||
// Default encoding is UTF-8
|
||||
var enc = encoding ? encoding : "UTF-8";
|
||||
var me = this;
|
||||
var execArgs = [this._localURL, enc, file.start, file.end];
|
||||
|
||||
// Read file
|
||||
exec(
|
||||
// Success callback
|
||||
function(r) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
// Save result
|
||||
me._result = r;
|
||||
|
||||
// If onload callback
|
||||
if (typeof me.onload === "function") {
|
||||
me.onload(new ProgressEvent("load", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
},
|
||||
// Error callback
|
||||
function(e) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
// null result
|
||||
me._result = null;
|
||||
|
||||
// Save error
|
||||
me._error = new FileError(e);
|
||||
|
||||
// If onerror callback
|
||||
if (typeof me.onerror === "function") {
|
||||
me.onerror(new ProgressEvent("error", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
}, "File", "readAsText", execArgs);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Read file and return data as a base64 encoded data url.
|
||||
* A data url is of the form:
|
||||
* data:[<mediatype>][;base64],<data>
|
||||
*
|
||||
* @param file {File} File object containing file properties
|
||||
*/
|
||||
FileReader.prototype.readAsDataURL = function(file) {
|
||||
if (initRead(this, file)) {
|
||||
return this._realReader.readAsDataURL(file);
|
||||
}
|
||||
|
||||
var me = this;
|
||||
var execArgs = [this._localURL, file.start, file.end];
|
||||
|
||||
// Read file
|
||||
exec(
|
||||
// Success callback
|
||||
function(r) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
// Save result
|
||||
me._result = r;
|
||||
|
||||
// If onload callback
|
||||
if (typeof me.onload === "function") {
|
||||
me.onload(new ProgressEvent("load", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
},
|
||||
// Error callback
|
||||
function(e) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
me._result = null;
|
||||
|
||||
// Save error
|
||||
me._error = new FileError(e);
|
||||
|
||||
// If onerror callback
|
||||
if (typeof me.onerror === "function") {
|
||||
me.onerror(new ProgressEvent("error", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
}, "File", "readAsDataURL", execArgs);
|
||||
};
|
||||
|
||||
/**
|
||||
* Read file and return data as a binary data.
|
||||
*
|
||||
* @param file {File} File object containing file properties
|
||||
*/
|
||||
FileReader.prototype.readAsBinaryString = function(file) {
|
||||
if (initRead(this, file)) {
|
||||
return this._realReader.readAsBinaryString(file);
|
||||
}
|
||||
|
||||
var me = this;
|
||||
var execArgs = [this._localURL, file.start, file.end];
|
||||
|
||||
// Read file
|
||||
exec(
|
||||
// Success callback
|
||||
function(r) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
me._result = r;
|
||||
|
||||
// If onload callback
|
||||
if (typeof me.onload === "function") {
|
||||
me.onload(new ProgressEvent("load", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
},
|
||||
// Error callback
|
||||
function(e) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
me._result = null;
|
||||
|
||||
// Save error
|
||||
me._error = new FileError(e);
|
||||
|
||||
// If onerror callback
|
||||
if (typeof me.onerror === "function") {
|
||||
me.onerror(new ProgressEvent("error", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
}, "File", "readAsBinaryString", execArgs);
|
||||
};
|
||||
|
||||
/**
|
||||
* Read file and return data as a binary data.
|
||||
*
|
||||
* @param file {File} File object containing file properties
|
||||
*/
|
||||
FileReader.prototype.readAsArrayBuffer = function(file) {
|
||||
if (initRead(this, file)) {
|
||||
return this._realReader.readAsArrayBuffer(file);
|
||||
}
|
||||
|
||||
var me = this;
|
||||
var execArgs = [this._localURL, file.start, file.end];
|
||||
|
||||
// Read file
|
||||
exec(
|
||||
// Success callback
|
||||
function(r) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
if (r instanceof Array) {
|
||||
r = new Uint8Array(r).buffer;
|
||||
}
|
||||
me._result = r;
|
||||
|
||||
// If onload callback
|
||||
if (typeof me.onload === "function") {
|
||||
me.onload(new ProgressEvent("load", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
},
|
||||
// Error callback
|
||||
function(e) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me._readyState === FileReader.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me._readyState = FileReader.DONE;
|
||||
|
||||
me._result = null;
|
||||
|
||||
// Save error
|
||||
me._error = new FileError(e);
|
||||
|
||||
// If onerror callback
|
||||
if (typeof me.onerror === "function") {
|
||||
me.onerror(new ProgressEvent("error", {target:me}));
|
||||
}
|
||||
|
||||
// If onloadend callback
|
||||
if (typeof me.onloadend === "function") {
|
||||
me.onloadend(new ProgressEvent("loadend", {target:me}));
|
||||
}
|
||||
}, "File", "readAsArrayBuffer", execArgs);
|
||||
};
|
||||
|
||||
module.exports = FileReader;
|
||||
48
plugins/cordova-plugin-file/www/FileSystem.js
vendored
Normal file
48
plugins/cordova-plugin-file/www/FileSystem.js
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var DirectoryEntry = require('./DirectoryEntry');
|
||||
|
||||
/**
|
||||
* An interface representing a file system
|
||||
*
|
||||
* @constructor
|
||||
* {DOMString} name the unique name of the file system (readonly)
|
||||
* {DirectoryEntry} root directory of the file system (readonly)
|
||||
*/
|
||||
var FileSystem = function(name, root) {
|
||||
this.name = name;
|
||||
if (root) {
|
||||
this.root = new DirectoryEntry(root.name, root.fullPath, this, root.nativeURL);
|
||||
} else {
|
||||
this.root = new DirectoryEntry(this.name, '/', this);
|
||||
}
|
||||
};
|
||||
|
||||
FileSystem.prototype.__format__ = function(fullPath, nativeUrl) {
|
||||
return fullPath;
|
||||
};
|
||||
|
||||
FileSystem.prototype.toJSON = function() {
|
||||
return "<FileSystem: " + this.name + ">";
|
||||
};
|
||||
|
||||
module.exports = FileSystem;
|
||||
41
plugins/cordova-plugin-file/www/FileUploadOptions.js
vendored
Normal file
41
plugins/cordova-plugin-file/www/FileUploadOptions.js
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Options to customize the HTTP request used to upload files.
|
||||
* @constructor
|
||||
* @param fileKey {String} Name of file request parameter.
|
||||
* @param fileName {String} Filename to be used by the server. Defaults to image.jpg.
|
||||
* @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg.
|
||||
* @param params {Object} Object with key: value params to send to the server.
|
||||
* @param headers {Object} Keys are header names, values are header values. Multiple
|
||||
* headers of the same name are not supported.
|
||||
*/
|
||||
var FileUploadOptions = function(fileKey, fileName, mimeType, params, headers, httpMethod) {
|
||||
this.fileKey = fileKey || null;
|
||||
this.fileName = fileName || null;
|
||||
this.mimeType = mimeType || null;
|
||||
this.params = params || null;
|
||||
this.headers = headers || null;
|
||||
this.httpMethod = httpMethod || null;
|
||||
};
|
||||
|
||||
module.exports = FileUploadOptions;
|
||||
30
plugins/cordova-plugin-file/www/FileUploadResult.js
vendored
Normal file
30
plugins/cordova-plugin-file/www/FileUploadResult.js
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* FileUploadResult
|
||||
* @constructor
|
||||
*/
|
||||
module.exports = function FileUploadResult(size, code, content) {
|
||||
this.bytesSent = size;
|
||||
this.responseCode = code;
|
||||
this.response = content;
|
||||
};
|
||||
302
plugins/cordova-plugin-file/www/FileWriter.js
vendored
Normal file
302
plugins/cordova-plugin-file/www/FileWriter.js
vendored
Normal file
@@ -0,0 +1,302 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec'),
|
||||
FileError = require('./FileError'),
|
||||
ProgressEvent = require('./ProgressEvent');
|
||||
|
||||
/**
|
||||
* This class writes to the mobile device file system.
|
||||
*
|
||||
* For Android:
|
||||
* The root directory is the root of the file system.
|
||||
* To write to the SD card, the file name is "sdcard/my_file.txt"
|
||||
*
|
||||
* @constructor
|
||||
* @param file {File} File object containing file properties
|
||||
* @param append if true write to the end of the file, otherwise overwrite the file
|
||||
*/
|
||||
var FileWriter = function(file) {
|
||||
this.fileName = "";
|
||||
this.length = 0;
|
||||
if (file) {
|
||||
this.localURL = file.localURL || file;
|
||||
this.length = file.size || 0;
|
||||
}
|
||||
// default is to write at the beginning of the file
|
||||
this.position = 0;
|
||||
|
||||
this.readyState = 0; // EMPTY
|
||||
|
||||
this.result = null;
|
||||
|
||||
// Error
|
||||
this.error = null;
|
||||
|
||||
// Event handlers
|
||||
this.onwritestart = null; // When writing starts
|
||||
this.onprogress = null; // While writing the file, and reporting partial file data
|
||||
this.onwrite = null; // When the write has successfully completed.
|
||||
this.onwriteend = null; // When the request has completed (either in success or failure).
|
||||
this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method.
|
||||
this.onerror = null; // When the write has failed (see errors).
|
||||
};
|
||||
|
||||
// States
|
||||
FileWriter.INIT = 0;
|
||||
FileWriter.WRITING = 1;
|
||||
FileWriter.DONE = 2;
|
||||
|
||||
/**
|
||||
* Abort writing file.
|
||||
*/
|
||||
FileWriter.prototype.abort = function() {
|
||||
// check for invalid state
|
||||
if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
|
||||
throw new FileError(FileError.INVALID_STATE_ERR);
|
||||
}
|
||||
|
||||
// set error
|
||||
this.error = new FileError(FileError.ABORT_ERR);
|
||||
|
||||
this.readyState = FileWriter.DONE;
|
||||
|
||||
// If abort callback
|
||||
if (typeof this.onabort === "function") {
|
||||
this.onabort(new ProgressEvent("abort", {"target":this}));
|
||||
}
|
||||
|
||||
// If write end callback
|
||||
if (typeof this.onwriteend === "function") {
|
||||
this.onwriteend(new ProgressEvent("writeend", {"target":this}));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Writes data to the file
|
||||
*
|
||||
* @param data text or blob to be written
|
||||
*/
|
||||
FileWriter.prototype.write = function(data) {
|
||||
|
||||
var that=this;
|
||||
var supportsBinary = (typeof window.Blob !== 'undefined' && typeof window.ArrayBuffer !== 'undefined');
|
||||
var isProxySupportBlobNatively = (cordova.platformId === "windows8" || cordova.platformId === "windows");
|
||||
var isBinary;
|
||||
|
||||
// Check to see if the incoming data is a blob
|
||||
if (data instanceof File || (!isProxySupportBlobNatively && supportsBinary && data instanceof Blob)) {
|
||||
var fileReader = new FileReader();
|
||||
fileReader.onload = function() {
|
||||
// Call this method again, with the arraybuffer as argument
|
||||
FileWriter.prototype.write.call(that, this.result);
|
||||
};
|
||||
if (supportsBinary) {
|
||||
fileReader.readAsArrayBuffer(data);
|
||||
} else {
|
||||
fileReader.readAsText(data);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Mark data type for safer transport over the binary bridge
|
||||
isBinary = supportsBinary && (data instanceof ArrayBuffer);
|
||||
if (isBinary && cordova.platformId === "windowsphone") {
|
||||
// create a plain array, using the keys from the Uint8Array view so that we can serialize it
|
||||
data = Array.apply(null, new Uint8Array(data));
|
||||
}
|
||||
|
||||
// Throw an exception if we are already writing a file
|
||||
if (this.readyState === FileWriter.WRITING) {
|
||||
throw new FileError(FileError.INVALID_STATE_ERR);
|
||||
}
|
||||
|
||||
// WRITING state
|
||||
this.readyState = FileWriter.WRITING;
|
||||
|
||||
var me = this;
|
||||
|
||||
// If onwritestart callback
|
||||
if (typeof me.onwritestart === "function") {
|
||||
me.onwritestart(new ProgressEvent("writestart", {"target":me}));
|
||||
}
|
||||
|
||||
// Write file
|
||||
exec(
|
||||
// Success callback
|
||||
function(r) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me.readyState === FileWriter.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// position always increases by bytes written because file would be extended
|
||||
me.position += r;
|
||||
// The length of the file is now where we are done writing.
|
||||
|
||||
me.length = me.position;
|
||||
|
||||
// DONE state
|
||||
me.readyState = FileWriter.DONE;
|
||||
|
||||
// If onwrite callback
|
||||
if (typeof me.onwrite === "function") {
|
||||
me.onwrite(new ProgressEvent("write", {"target":me}));
|
||||
}
|
||||
|
||||
// If onwriteend callback
|
||||
if (typeof me.onwriteend === "function") {
|
||||
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
|
||||
}
|
||||
},
|
||||
// Error callback
|
||||
function(e) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me.readyState === FileWriter.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me.readyState = FileWriter.DONE;
|
||||
|
||||
// Save error
|
||||
me.error = new FileError(e);
|
||||
|
||||
// If onerror callback
|
||||
if (typeof me.onerror === "function") {
|
||||
me.onerror(new ProgressEvent("error", {"target":me}));
|
||||
}
|
||||
|
||||
// If onwriteend callback
|
||||
if (typeof me.onwriteend === "function") {
|
||||
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
|
||||
}
|
||||
}, "File", "write", [this.localURL, data, this.position, isBinary]);
|
||||
};
|
||||
|
||||
/**
|
||||
* Moves the file pointer to the location specified.
|
||||
*
|
||||
* If the offset is a negative number the position of the file
|
||||
* pointer is rewound. If the offset is greater than the file
|
||||
* size the position is set to the end of the file.
|
||||
*
|
||||
* @param offset is the location to move the file pointer to.
|
||||
*/
|
||||
FileWriter.prototype.seek = function(offset) {
|
||||
// Throw an exception if we are already writing a file
|
||||
if (this.readyState === FileWriter.WRITING) {
|
||||
throw new FileError(FileError.INVALID_STATE_ERR);
|
||||
}
|
||||
|
||||
if (!offset && offset !== 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// See back from end of file.
|
||||
if (offset < 0) {
|
||||
this.position = Math.max(offset + this.length, 0);
|
||||
}
|
||||
// Offset is bigger than file size so set position
|
||||
// to the end of the file.
|
||||
else if (offset > this.length) {
|
||||
this.position = this.length;
|
||||
}
|
||||
// Offset is between 0 and file size so set the position
|
||||
// to start writing.
|
||||
else {
|
||||
this.position = offset;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Truncates the file to the size specified.
|
||||
*
|
||||
* @param size to chop the file at.
|
||||
*/
|
||||
FileWriter.prototype.truncate = function(size) {
|
||||
// Throw an exception if we are already writing a file
|
||||
if (this.readyState === FileWriter.WRITING) {
|
||||
throw new FileError(FileError.INVALID_STATE_ERR);
|
||||
}
|
||||
|
||||
// WRITING state
|
||||
this.readyState = FileWriter.WRITING;
|
||||
|
||||
var me = this;
|
||||
|
||||
// If onwritestart callback
|
||||
if (typeof me.onwritestart === "function") {
|
||||
me.onwritestart(new ProgressEvent("writestart", {"target":this}));
|
||||
}
|
||||
|
||||
// Write file
|
||||
exec(
|
||||
// Success callback
|
||||
function(r) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me.readyState === FileWriter.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me.readyState = FileWriter.DONE;
|
||||
|
||||
// Update the length of the file
|
||||
me.length = r;
|
||||
me.position = Math.min(me.position, r);
|
||||
|
||||
// If onwrite callback
|
||||
if (typeof me.onwrite === "function") {
|
||||
me.onwrite(new ProgressEvent("write", {"target":me}));
|
||||
}
|
||||
|
||||
// If onwriteend callback
|
||||
if (typeof me.onwriteend === "function") {
|
||||
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
|
||||
}
|
||||
},
|
||||
// Error callback
|
||||
function(e) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me.readyState === FileWriter.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me.readyState = FileWriter.DONE;
|
||||
|
||||
// Save error
|
||||
me.error = new FileError(e);
|
||||
|
||||
// If onerror callback
|
||||
if (typeof me.onerror === "function") {
|
||||
me.onerror(new ProgressEvent("error", {"target":me}));
|
||||
}
|
||||
|
||||
// If onwriteend callback
|
||||
if (typeof me.onwriteend === "function") {
|
||||
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
|
||||
}
|
||||
}, "File", "truncate", [this.localURL, size]);
|
||||
};
|
||||
|
||||
module.exports = FileWriter;
|
||||
36
plugins/cordova-plugin-file/www/Flags.js
vendored
Normal file
36
plugins/cordova-plugin-file/www/Flags.js
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Supplies arguments to methods that lookup or create files and directories.
|
||||
*
|
||||
* @param create
|
||||
* {boolean} file or directory if it doesn't exist
|
||||
* @param exclusive
|
||||
* {boolean} used with create; if true the command will fail if
|
||||
* target path exists
|
||||
*/
|
||||
function Flags(create, exclusive) {
|
||||
this.create = create || false;
|
||||
this.exclusive = exclusive || false;
|
||||
}
|
||||
|
||||
module.exports = Flags;
|
||||
23
plugins/cordova-plugin-file/www/LocalFileSystem.js
vendored
Normal file
23
plugins/cordova-plugin-file/www/LocalFileSystem.js
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
exports.TEMPORARY = 0;
|
||||
exports.PERSISTENT = 1;
|
||||
40
plugins/cordova-plugin-file/www/Metadata.js
vendored
Normal file
40
plugins/cordova-plugin-file/www/Metadata.js
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Information about the state of the file or directory
|
||||
*
|
||||
* {Date} modificationTime (readonly)
|
||||
*/
|
||||
var Metadata = function(metadata) {
|
||||
if (typeof metadata == "object") {
|
||||
this.modificationTime = new Date(metadata.modificationTime);
|
||||
this.size = metadata.size || 0;
|
||||
} else if (typeof metadata == "undefined") {
|
||||
this.modificationTime = null;
|
||||
this.size = 0;
|
||||
} else {
|
||||
/* Backwards compatiblity with platforms that only return a timestamp */
|
||||
this.modificationTime = new Date(metadata);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = Metadata;
|
||||
67
plugins/cordova-plugin-file/www/ProgressEvent.js
vendored
Normal file
67
plugins/cordova-plugin-file/www/ProgressEvent.js
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
// If ProgressEvent exists in global context, use it already, otherwise use our own polyfill
|
||||
// Feature test: See if we can instantiate a native ProgressEvent;
|
||||
// if so, use that approach,
|
||||
// otherwise fill-in with our own implementation.
|
||||
//
|
||||
// NOTE: right now we always fill in with our own. Down the road would be nice if we can use whatever is native in the webview.
|
||||
var ProgressEvent = (function() {
|
||||
/*
|
||||
var createEvent = function(data) {
|
||||
var event = document.createEvent('Events');
|
||||
event.initEvent('ProgressEvent', false, false);
|
||||
if (data) {
|
||||
for (var i in data) {
|
||||
if (data.hasOwnProperty(i)) {
|
||||
event[i] = data[i];
|
||||
}
|
||||
}
|
||||
if (data.target) {
|
||||
// TODO: cannot call <some_custom_object>.dispatchEvent
|
||||
// need to first figure out how to implement EventTarget
|
||||
}
|
||||
}
|
||||
return event;
|
||||
};
|
||||
try {
|
||||
var ev = createEvent({type:"abort",target:document});
|
||||
return function ProgressEvent(type, data) {
|
||||
data.type = type;
|
||||
return createEvent(data);
|
||||
};
|
||||
} catch(e){
|
||||
*/
|
||||
return function ProgressEvent(type, dict) {
|
||||
this.type = type;
|
||||
this.bubbles = false;
|
||||
this.cancelBubble = false;
|
||||
this.cancelable = false;
|
||||
this.lengthComputable = false;
|
||||
this.loaded = dict && dict.loaded ? dict.loaded : 0;
|
||||
this.total = dict && dict.total ? dict.total : 0;
|
||||
this.target = dict && dict.target ? dict.target : null;
|
||||
};
|
||||
//}
|
||||
})();
|
||||
|
||||
module.exports = ProgressEvent;
|
||||
36
plugins/cordova-plugin-file/www/android/FileSystem.js
vendored
Normal file
36
plugins/cordova-plugin-file/www/android/FileSystem.js
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
FILESYSTEM_PROTOCOL = "cdvfile";
|
||||
|
||||
module.exports = {
|
||||
__format__: function(fullPath, nativeUrl) {
|
||||
var path = '/' + this.name + '/' + encodeURI(fullPath);
|
||||
path = path.replace('//','/');
|
||||
var ret = FILESYSTEM_PROTOCOL + '://localhost' + path;
|
||||
var m = /\?.*/.exec(nativeUrl);
|
||||
if (m) {
|
||||
ret += m[0];
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
51
plugins/cordova-plugin-file/www/blackberry10/FileProxy.js
vendored
Normal file
51
plugins/cordova-plugin-file/www/blackberry10/FileProxy.js
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* FileProxy
|
||||
*
|
||||
* Register all File exec calls to be handled by proxy
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
copyTo: require('cordova-plugin-file.copyToProxy'),
|
||||
getDirectory: require('cordova-plugin-file.getDirectoryProxy'),
|
||||
getFile: require('cordova-plugin-file.getFileProxy'),
|
||||
getFileMetadata: require('cordova-plugin-file.getFileMetadataProxy'),
|
||||
getMetadata: require('cordova-plugin-file.getMetadataProxy'),
|
||||
getParent: require('cordova-plugin-file.getParentProxy'),
|
||||
moveTo: require('cordova-plugin-file.moveToProxy'),
|
||||
readAsArrayBuffer: require('cordova-plugin-file.readAsArrayBufferProxy'),
|
||||
readAsBinaryString: require('cordova-plugin-file.readAsBinaryStringProxy'),
|
||||
readAsDataURL: require('cordova-plugin-file.readAsDataURLProxy'),
|
||||
readAsText: require('cordova-plugin-file.readAsTextProxy'),
|
||||
readEntries: require('cordova-plugin-file.readEntriesProxy'),
|
||||
remove: require('cordova-plugin-file.removeProxy'),
|
||||
removeRecursively: require('cordova-plugin-file.removeRecursivelyProxy'),
|
||||
resolveLocalFileSystemURI: require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAllFileSystems: require('cordova-plugin-file.requestAllFileSystemsProxy'),
|
||||
requestFileSystem: require('cordova-plugin-file.requestFileSystemProxy'),
|
||||
setMetadata: require('cordova-plugin-file.setMetadataProxy'),
|
||||
truncate: require('cordova-plugin-file.truncateProxy'),
|
||||
write: require('cordova-plugin-file.writeProxy')
|
||||
};
|
||||
|
||||
require('cordova/exec/proxy').add('File', module.exports);
|
||||
46
plugins/cordova-plugin-file/www/blackberry10/FileSystem.js
vendored
Normal file
46
plugins/cordova-plugin-file/www/blackberry10/FileSystem.js
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* FileSystem
|
||||
*
|
||||
* Translate temporary / persistent / root file paths
|
||||
*/
|
||||
|
||||
var info = require("cordova-plugin-file.bb10FileSystemInfo");
|
||||
|
||||
module.exports = {
|
||||
__format__: function(fullPath) {
|
||||
switch (this.name) {
|
||||
case 'temporary':
|
||||
path = info.temporaryPath + fullPath;
|
||||
break;
|
||||
case 'persistent':
|
||||
path = info.persistentPath + fullPath;
|
||||
break;
|
||||
case 'root':
|
||||
path = 'file://' + fullPath;
|
||||
break;
|
||||
}
|
||||
return window.encodeURI(path);
|
||||
}
|
||||
};
|
||||
|
||||
141
plugins/cordova-plugin-file/www/blackberry10/copyTo.js
vendored
Normal file
141
plugins/cordova-plugin-file/www/blackberry10/copyTo.js
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* copyTo
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of entry to copy
|
||||
* 1 - URL of the directory into which to copy/move the entry
|
||||
* 2 - the new name of the entry, defaults to the current name
|
||||
* move - if true, delete the entry which was copied
|
||||
* OUT:
|
||||
* success - entry for the copied file or directory
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args, move) {
|
||||
var uri = args[0],
|
||||
destination = args[1],
|
||||
fileName = args[2],
|
||||
copiedEntry,
|
||||
onSuccess = function () {
|
||||
resolve(
|
||||
function (entry) {
|
||||
if (typeof(success) === 'function') {
|
||||
success(entry);
|
||||
}
|
||||
},
|
||||
onFail,
|
||||
[destination + copiedEntry.name]
|
||||
);
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof(fail) === 'function') {
|
||||
if (error && error.code) {
|
||||
//set error codes expected by mobile spec
|
||||
if (uri === destination) {
|
||||
fail(FileError.INVALID_MODIFICATION_ERR);
|
||||
} else if (error.code === FileError.SECURITY_ERR) {
|
||||
fail(FileError.INVALID_MODIFICATION_ERR);
|
||||
} else {
|
||||
fail(error.code);
|
||||
}
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
},
|
||||
writeFile = function (fileEntry, blob, entry) {
|
||||
copiedEntry = fileEntry;
|
||||
fileEntry.createWriter(function (fileWriter) {
|
||||
fileWriter.onwriteend = function () {
|
||||
if (move) {
|
||||
entry.nativeEntry.remove(onSuccess, function () {
|
||||
console.error("Move operation failed. Files may exist at both source and destination");
|
||||
});
|
||||
} else {
|
||||
onSuccess();
|
||||
}
|
||||
};
|
||||
fileWriter.onerror = onFail;
|
||||
fileWriter.write(blob);
|
||||
}, onFail);
|
||||
},
|
||||
copyFile = function (entry) {
|
||||
if (entry.nativeEntry.file) {
|
||||
entry.nativeEntry.file(function (file) {
|
||||
var reader = new FileReader()._realReader;
|
||||
reader.onloadend = function (e) {
|
||||
var contents = new Uint8Array(this.result),
|
||||
blob = new Blob([contents]);
|
||||
resolve(function (destEntry) {
|
||||
requestAnimationFrame(function () {
|
||||
destEntry.nativeEntry.getFile(fileName, {create: true}, function (fileEntry) {
|
||||
writeFile(fileEntry, blob, entry);
|
||||
}, onFail);
|
||||
});
|
||||
}, onFail, [destination]);
|
||||
};
|
||||
reader.onerror = onFail;
|
||||
reader.readAsArrayBuffer(file);
|
||||
}, onFail);
|
||||
} else {
|
||||
onFail(FileError.INVALID_MODIFICATION_ERR);
|
||||
}
|
||||
},
|
||||
copyDirectory = function (entry) {
|
||||
resolve(function (destEntry) {
|
||||
if (entry.filesystemName !== destEntry.filesystemName) {
|
||||
console.error("Copying directories between filesystems is not supported on BB10");
|
||||
onFail(FileError.INVALID_MODIFICATION_ERR);
|
||||
} else {
|
||||
entry.nativeEntry.copyTo(destEntry.nativeEntry, fileName, function () {
|
||||
resolve(function (copiedDir) {
|
||||
copiedEntry = copiedDir;
|
||||
if (move) {
|
||||
entry.nativeEntry.removeRecursively(onSuccess, onFail);
|
||||
} else {
|
||||
onSuccess();
|
||||
}
|
||||
}, onFail, [destination + fileName]);
|
||||
}, onFail);
|
||||
}
|
||||
}, onFail, [destination]);
|
||||
};
|
||||
if (destination + fileName === uri) {
|
||||
onFail(FileError.INVALID_MODIFICATION_ERR);
|
||||
} else if (fileName.indexOf(':') > -1) {
|
||||
onFail(FileError.ENCODING_ERR);
|
||||
} else {
|
||||
resolve(function (entry) {
|
||||
if (entry.isDirectory) {
|
||||
copyDirectory(entry);
|
||||
} else {
|
||||
copyFile(entry);
|
||||
}
|
||||
}, onFail, [uri]);
|
||||
}
|
||||
};
|
||||
77
plugins/cordova-plugin-file/www/blackberry10/createEntryFromNative.js
vendored
Normal file
77
plugins/cordova-plugin-file/www/blackberry10/createEntryFromNative.js
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* createEntryFromNative
|
||||
*
|
||||
* IN
|
||||
* native - webkit Entry
|
||||
* OUT
|
||||
* returns Cordova entry
|
||||
*/
|
||||
|
||||
var info = require('cordova-plugin-file.bb10FileSystemInfo'),
|
||||
fileSystems = require('cordova-plugin-file.fileSystems');
|
||||
|
||||
module.exports = function (native) {
|
||||
var entry = {
|
||||
nativeEntry: native,
|
||||
isDirectory: !!native.isDirectory,
|
||||
isFile: !!native.isFile,
|
||||
name: native.name,
|
||||
fullPath: native.fullPath,
|
||||
filesystemName: native.filesystem.name,
|
||||
nativeURL: native.toURL()
|
||||
},
|
||||
persistentPath = info.persistentPath.substring(7),
|
||||
temporaryPath = info.temporaryPath.substring(7);
|
||||
//fix bb10 webkit incorrect nativeURL
|
||||
if (native.filesystem.name === 'root') {
|
||||
entry.nativeURL = 'file:///' + native.fullPath;
|
||||
} else if (entry.nativeURL.indexOf('filesystem:local:///persistent/') === 0) {
|
||||
entry.nativeURL = info.persistentPath + native.fullPath;
|
||||
} else if (entry.nativeURL.indexOf('filesystem:local:///temporary') === 0) {
|
||||
entry.nativeURL = info.temporaryPath + native.fullPath;
|
||||
}
|
||||
//translate file system name from bb10 webkit
|
||||
if (entry.filesystemName === 'local__0:Persistent' || entry.fullPath.indexOf(persistentPath) !== -1) {
|
||||
entry.filesystemName = 'persistent';
|
||||
} else if (entry.filesystemName === 'local__0:Temporary' || entry.fullPath.indexOf(temporaryPath) !== -1) {
|
||||
entry.filesystemName = 'temporary';
|
||||
}
|
||||
//add file system property (will be called sync)
|
||||
fileSystems.getFs(entry.filesystemName, function (fs) {
|
||||
entry.filesystem = fs;
|
||||
});
|
||||
//set root on fullPath for persistent / temporary locations
|
||||
entry.fullPath = entry.fullPath.replace(persistentPath, "");
|
||||
entry.fullPath = entry.fullPath.replace(temporaryPath, "");
|
||||
//set trailing slash on directory
|
||||
if (entry.isDirectory && entry.fullPath.substring(entry.fullPath.length - 1) !== '/') {
|
||||
entry.fullPath += '/';
|
||||
}
|
||||
if (entry.isDirectory && entry.nativeURL.substring(entry.nativeURL.length - 1) !== '/') {
|
||||
entry.nativeURL += '/';
|
||||
}
|
||||
//encode URL
|
||||
entry.nativeURL = window.encodeURI(entry.nativeURL);
|
||||
return entry;
|
||||
};
|
||||
72
plugins/cordova-plugin-file/www/blackberry10/getDirectory.js
vendored
Normal file
72
plugins/cordova-plugin-file/www/blackberry10/getDirectory.js
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* getDirectory
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - local filesytem URI for the base directory to search
|
||||
* 1 - directory to be created/returned; may be absolute path or relative path
|
||||
* 2 - options object
|
||||
* OUT:
|
||||
* success - DirectoryEntry
|
||||
* fail - FileError code
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0] === "/" ? "" : args[0],
|
||||
dir = args[1],
|
||||
options = args[2],
|
||||
onSuccess = function (entry) {
|
||||
if (typeof(success) === 'function') {
|
||||
success(entry);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof(fail) === 'function') {
|
||||
if (error && error.code) {
|
||||
//set error codes expected by mobile-spec tests
|
||||
if (error.code === FileError.INVALID_MODIFICATION_ERR && options.exclusive) {
|
||||
fail(FileError.PATH_EXISTS_ERR);
|
||||
} else if ( error.code === FileError.NOT_FOUND_ERR && dir.indexOf(':') > 0) {
|
||||
fail(FileError.ENCODING_ERR);
|
||||
} else {
|
||||
fail(error.code);
|
||||
}
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (entry) {
|
||||
requestAnimationFrame(function () {
|
||||
entry.nativeEntry.getDirectory(dir, options, function (nativeEntry) {
|
||||
resolve(function (entry) {
|
||||
onSuccess(entry);
|
||||
}, onFail, [uri + "/" + dir]);
|
||||
}, onFail);
|
||||
});
|
||||
}, onFail, [uri]);
|
||||
};
|
||||
57
plugins/cordova-plugin-file/www/blackberry10/getFile.js
vendored
Normal file
57
plugins/cordova-plugin-file/www/blackberry10/getFile.js
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* getFile
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - local filesytem URI for the base directory to search
|
||||
* 1 - file to be created/returned; may be absolute path or relative path
|
||||
* 2 - options object
|
||||
* OUT:
|
||||
* success - FileEntry
|
||||
* fail - FileError code
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0] === "/" ? "" : args[0] + "/" + args[1],
|
||||
options = args[2],
|
||||
onSuccess = function (entry) {
|
||||
if (typeof(success) === 'function') {
|
||||
success(entry);
|
||||
}
|
||||
},
|
||||
onFail = function (code) {
|
||||
if (typeof(fail) === 'function') {
|
||||
fail(code);
|
||||
}
|
||||
};
|
||||
resolve(function (entry) {
|
||||
if (!entry.isFile) {
|
||||
onFail(FileError.TYPE_MISMATCH_ERR);
|
||||
} else {
|
||||
onSuccess(entry);
|
||||
}
|
||||
}, onFail, [uri, options]);
|
||||
};
|
||||
65
plugins/cordova-plugin-file/www/blackberry10/getFileMetadata.js
vendored
Normal file
65
plugins/cordova-plugin-file/www/blackberry10/getFileMetadata.js
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* getFileMetadata
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - local filesytem URI
|
||||
* OUT:
|
||||
* success - file
|
||||
* - name
|
||||
* - type
|
||||
* - lastModifiedDate
|
||||
* - size
|
||||
* fail - FileError code
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
onSuccess = function (entry) {
|
||||
if (typeof(success) === 'function') {
|
||||
success(entry);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof(fail) === 'function') {
|
||||
if (error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (entry) {
|
||||
requestAnimationFrame(function () {
|
||||
if (entry.nativeEntry.file) {
|
||||
entry.nativeEntry.file(onSuccess, onFail);
|
||||
} else {
|
||||
entry.nativeEntry.getMetadata(onSuccess, onFail);
|
||||
}
|
||||
});
|
||||
}, onFail, [uri]);
|
||||
};
|
||||
54
plugins/cordova-plugin-file/www/blackberry10/getMetadata.js
vendored
Normal file
54
plugins/cordova-plugin-file/www/blackberry10/getMetadata.js
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* getMetadata
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - local filesytem URI
|
||||
* OUT:
|
||||
* success - metadata
|
||||
* fail - FileError code
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
onSuccess = function (entry) {
|
||||
if (typeof(success) === 'function') {
|
||||
success(entry);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof(fail) === 'function') {
|
||||
if (error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (entry) {
|
||||
entry.nativeEntry.getMetadata(onSuccess, onFail);
|
||||
}, onFail, [uri]);
|
||||
};
|
||||
57
plugins/cordova-plugin-file/www/blackberry10/getParent.js
vendored
Normal file
57
plugins/cordova-plugin-file/www/blackberry10/getParent.js
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* getParent
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - local filesytem URI
|
||||
* OUT:
|
||||
* success - DirectoryEntry of parent
|
||||
* fail - FileError code
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
onSuccess = function (entry) {
|
||||
if (typeof(success) === 'function') {
|
||||
success(entry);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof(fail) === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (entry) {
|
||||
requestAnimationFrame(function () {
|
||||
entry.nativeEntry.getParent(onSuccess, onFail);
|
||||
});
|
||||
}, onFail, [uri]);
|
||||
};
|
||||
52
plugins/cordova-plugin-file/www/blackberry10/info.js
vendored
Normal file
52
plugins/cordova-plugin-file/www/blackberry10/info.js
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* info
|
||||
*
|
||||
* persistentPath - full path to app sandboxed persistent storage
|
||||
* temporaryPath - full path to app sandboxed temporary storage
|
||||
* localPath - full path to app source (www dir)
|
||||
* MAX_SIZE - maximum size for filesystem request
|
||||
*/
|
||||
|
||||
var info = {
|
||||
persistentPath: "",
|
||||
temporaryPath: "",
|
||||
localPath: "",
|
||||
MAX_SIZE: 64 * 1024 * 1024 * 1024
|
||||
};
|
||||
|
||||
cordova.exec(
|
||||
function (path) {
|
||||
info.persistentPath = 'file://' + path + '/webviews/webfs/persistent/local__0';
|
||||
info.temporaryPath = 'file://' + path + '/webviews/webfs/temporary/local__0';
|
||||
info.localPath = path.replace('/data', '/app/native');
|
||||
},
|
||||
function () {
|
||||
console.error('Unable to determine local storage file path');
|
||||
},
|
||||
'File',
|
||||
'getHomePath',
|
||||
false
|
||||
);
|
||||
|
||||
module.exports = info;
|
||||
39
plugins/cordova-plugin-file/www/blackberry10/moveTo.js
vendored
Normal file
39
plugins/cordova-plugin-file/www/blackberry10/moveTo.js
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* moveTo
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of entry to move
|
||||
* 1 - URL of the directory into which to move the entry
|
||||
* 2 - the new name of the entry, defaults to the current name
|
||||
* OUT:
|
||||
* success - entry for the copied file or directory
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var copy = cordova.require('cordova-plugin-file.copyToProxy');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
copy(success, fail, args, true);
|
||||
};
|
||||
68
plugins/cordova-plugin-file/www/blackberry10/readAsArrayBuffer.js
vendored
Normal file
68
plugins/cordova-plugin-file/www/blackberry10/readAsArrayBuffer.js
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* readAsArrayBuffer
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of file to read
|
||||
* 1 - start position
|
||||
* 2 - end position
|
||||
* OUT:
|
||||
* success - ArrayBuffer of file
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
start = args[1],
|
||||
end = args[2],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
fs.nativeEntry.file(function (file) {
|
||||
var reader = new FileReader()._realReader;
|
||||
reader.onloadend = function () {
|
||||
onSuccess(this.result.slice(start, end));
|
||||
};
|
||||
reader.onerror = onFail;
|
||||
reader.readAsArrayBuffer(file);
|
||||
}, onFail);
|
||||
});
|
||||
}, fail, [uri]);
|
||||
};
|
||||
68
plugins/cordova-plugin-file/www/blackberry10/readAsBinaryString.js
vendored
Normal file
68
plugins/cordova-plugin-file/www/blackberry10/readAsBinaryString.js
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* readAsBinaryString
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of file to read
|
||||
* 1 - start position
|
||||
* 2 - end position
|
||||
* OUT:
|
||||
* success - BinaryString contents of file
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
start = args[1],
|
||||
end = args[2],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
fs.nativeEntry.file(function (file) {
|
||||
var reader = new FileReader()._realReader;
|
||||
reader.onloadend = function () {
|
||||
onSuccess(this.result.substring(start, end));
|
||||
};
|
||||
reader.onerror = onFail;
|
||||
reader.readAsBinaryString(file);
|
||||
}, onFail);
|
||||
});
|
||||
}, fail, [uri]);
|
||||
};
|
||||
65
plugins/cordova-plugin-file/www/blackberry10/readAsDataURL.js
vendored
Normal file
65
plugins/cordova-plugin-file/www/blackberry10/readAsDataURL.js
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* readAsDataURL
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of file to read
|
||||
* OUT:
|
||||
* success - DataURL representation of file contents
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
fs.nativeEntry.file(function (file) {
|
||||
var reader = new FileReader()._realReader;
|
||||
reader.onloadend = function () {
|
||||
onSuccess(this.result);
|
||||
};
|
||||
reader.onerror = onFail;
|
||||
reader.readAsDataURL(file);
|
||||
}, onFail);
|
||||
});
|
||||
}, fail, [uri]);
|
||||
};
|
||||
77
plugins/cordova-plugin-file/www/blackberry10/readAsText.js
vendored
Normal file
77
plugins/cordova-plugin-file/www/blackberry10/readAsText.js
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* readAsText
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of file to read
|
||||
* 1 - encoding
|
||||
* 2 - start position
|
||||
* 3 - end position
|
||||
* OUT:
|
||||
* success - text contents of file
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
start = args[2],
|
||||
end = args[3],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
fs.nativeEntry.file(function (file) {
|
||||
var reader = new FileReader()._realReader;
|
||||
reader.onloadend = function () {
|
||||
var contents = new Uint8Array(this.result).subarray(start, end),
|
||||
blob = new Blob([contents]),
|
||||
textReader = new FileReader()._realReader;
|
||||
textReader.onloadend = function () {
|
||||
onSuccess(this.result);
|
||||
};
|
||||
textReader.onerror = onFail;
|
||||
textReader.readAsText(blob);
|
||||
};
|
||||
reader.onerror = onFail;
|
||||
reader.readAsArrayBuffer(file);
|
||||
}, onFail);
|
||||
});
|
||||
}, fail, [uri]);
|
||||
};
|
||||
71
plugins/cordova-plugin-file/www/blackberry10/readEntries.js
vendored
Normal file
71
plugins/cordova-plugin-file/www/blackberry10/readEntries.js
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* readEntries
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of directory to list
|
||||
* OUT:
|
||||
* success - Array of Entry objects
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
info = require('cordova-plugin-file.bb10FileSystemInfo'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame'),
|
||||
createEntryFromNative = cordova.require('cordova-plugin-file.bb10CreateEntryFromNative');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
var reader = fs.nativeEntry.createReader(),
|
||||
entries = [],
|
||||
readEntries = function() {
|
||||
reader.readEntries(function (results) {
|
||||
if (!results.length) {
|
||||
onSuccess(entries.sort().map(createEntryFromNative));
|
||||
} else {
|
||||
entries = entries.concat(Array.prototype.slice.call(results || [], 0));
|
||||
readEntries();
|
||||
}
|
||||
}, onFail);
|
||||
};
|
||||
readEntries();
|
||||
});
|
||||
}, fail, [uri]);
|
||||
};
|
||||
61
plugins/cordova-plugin-file/www/blackberry10/remove.js
vendored
Normal file
61
plugins/cordova-plugin-file/www/blackberry10/remove.js
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* remove
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of Entry to remove
|
||||
* OUT:
|
||||
* success - (no args)
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
if (fs.fullPath === '/') {
|
||||
onFail(FileError.NO_MODIFICATION_ALLOWED_ERR);
|
||||
} else {
|
||||
fs.nativeEntry.remove(onSuccess, onFail);
|
||||
}
|
||||
});
|
||||
}, fail, [uri]);
|
||||
};
|
||||
62
plugins/cordova-plugin-file/www/blackberry10/removeRecursively.js
vendored
Normal file
62
plugins/cordova-plugin-file/www/blackberry10/removeRecursively.js
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* removeRecursively
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of DirectoryEntry to remove recursively
|
||||
* OUT:
|
||||
* success - (no args)
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error.code) {
|
||||
if (error.code === FileError.INVALID_MODIFICATION_ERR) {
|
||||
//mobile-spec expects this error code
|
||||
fail(FileError.NO_MODIFICATION_ALLOWED_ERR);
|
||||
} else {
|
||||
fail(error.code);
|
||||
}
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
fs.nativeEntry.removeRecursively(onSuccess, onFail);
|
||||
});
|
||||
}, fail, [uri]);
|
||||
};
|
||||
42
plugins/cordova-plugin-file/www/blackberry10/requestAllFileSystems.js
vendored
Normal file
42
plugins/cordova-plugin-file/www/blackberry10/requestAllFileSystems.js
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* requestAllFileSystems
|
||||
*
|
||||
* IN - no arguments
|
||||
* OUT
|
||||
* success - Array of FileSystems
|
||||
* - filesystemName
|
||||
* - fullPath
|
||||
* - name
|
||||
* - nativeURL
|
||||
*/
|
||||
|
||||
var info = require('cordova-plugin-file.bb10FileSystemInfo');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
success([
|
||||
{ filesystemName: 'persistent', name: 'persistent', fullPath: '/', nativeURL: info.persistentPath + '/' },
|
||||
{ filesystemName: 'temporary', name: 'temporary', fullPath: '/', nativeURL: info.temporaryPath + '/' },
|
||||
{ filesystemName: 'root', name: 'root', fullPath: '/', nativeURL: 'file:///' }
|
||||
]);
|
||||
}
|
||||
38
plugins/cordova-plugin-file/www/blackberry10/requestAnimationFrame.js
vendored
Normal file
38
plugins/cordova-plugin-file/www/blackberry10/requestAnimationFrame.js
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* requestAnimationFrame
|
||||
*
|
||||
* This is used throughout the BB10 File implementation to wrap
|
||||
* native webkit calls. There is a bug in the webkit implementation
|
||||
* which causes callbacks to never return when multiple file system
|
||||
* APIs are called in sequence. This should also make the UI more
|
||||
* responsive during file operations.
|
||||
*
|
||||
* Supported on BB10 OS > 10.1
|
||||
*/
|
||||
|
||||
var requestAnimationFrame = window.requestAnimationFrame;
|
||||
if (typeof(requestAnimationFrame) !== 'function') {
|
||||
requestAnimationFrame = function (cb) { cb(); };
|
||||
}
|
||||
module.exports = requestAnimationFrame;
|
||||
53
plugins/cordova-plugin-file/www/blackberry10/requestFileSystem.js
vendored
Normal file
53
plugins/cordova-plugin-file/www/blackberry10/requestFileSystem.js
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* requestFileSystem
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - type (TEMPORARY = 0, PERSISTENT = 1)
|
||||
* 1 - size
|
||||
* OUT:
|
||||
* success - FileSystem object
|
||||
* - name - the human readable directory name
|
||||
* - root - DirectoryEntry object
|
||||
* - isDirectory
|
||||
* - isFile
|
||||
* - name
|
||||
* - fullPath
|
||||
* fail - FileError code
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var fsType = args[0] === 0 ? 'temporary' : 'persistent',
|
||||
size = args[1],
|
||||
onSuccess = function (fs) {
|
||||
var directory = {
|
||||
name: fsType,
|
||||
root: fs
|
||||
};
|
||||
success(directory);
|
||||
};
|
||||
resolve(onSuccess, fail, ['cdvfile://localhost/' + fsType + '/', undefined, size]);
|
||||
};
|
||||
172
plugins/cordova-plugin-file/www/blackberry10/resolveLocalFileSystemURI.js
vendored
Normal file
172
plugins/cordova-plugin-file/www/blackberry10/resolveLocalFileSystemURI.js
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* resolveLocalFileSystemURI
|
||||
*
|
||||
* IN
|
||||
* args
|
||||
* 0 - escaped local filesystem URI
|
||||
* 1 - options (standard HTML5 file system options)
|
||||
* 2 - size
|
||||
* OUT
|
||||
* success - Entry object
|
||||
* - isDirectory
|
||||
* - isFile
|
||||
* - name
|
||||
* - fullPath
|
||||
* - nativeURL
|
||||
* - fileSystemName
|
||||
* fail - FileError code
|
||||
*/
|
||||
|
||||
var info = require('cordova-plugin-file.bb10FileSystemInfo'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame'),
|
||||
createEntryFromNative = require('cordova-plugin-file.bb10CreateEntryFromNative'),
|
||||
SANDBOXED = true,
|
||||
UNSANDBOXED = false;
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var request = args[0],
|
||||
options = args[1],
|
||||
size = args[2];
|
||||
if (request) {
|
||||
request = decodeURIComponent(request);
|
||||
if (request.indexOf('?') > -1) {
|
||||
//bb10 does not support params; strip them off
|
||||
request = request.substring(0, request.indexOf('?'));
|
||||
}
|
||||
if (request.indexOf('file://localhost/') === 0) {
|
||||
//remove localhost prefix
|
||||
request = request.replace('file://localhost/', 'file:///');
|
||||
}
|
||||
//requests to sandboxed locations should use cdvfile
|
||||
request = request.replace(info.persistentPath, 'cdvfile://localhost/persistent');
|
||||
request = request.replace(info.temporaryPath, 'cdvfile://localhost/temporary');
|
||||
//pick appropriate handler
|
||||
if (request.indexOf('file:///') === 0) {
|
||||
resolveFile(success, fail, request, options);
|
||||
} else if (request.indexOf('cdvfile://localhost/') === 0) {
|
||||
resolveCdvFile(success, fail, request, options, size);
|
||||
} else if (request.indexOf('local:///') === 0) {
|
||||
resolveLocal(success, fail, request, options);
|
||||
} else {
|
||||
fail(FileError.ENCODING_ERR);
|
||||
}
|
||||
} else {
|
||||
fail(FileError.NOT_FOUND_ERR);
|
||||
}
|
||||
};
|
||||
|
||||
//resolve file:///
|
||||
function resolveFile(success, fail, request, options) {
|
||||
var path = request.substring(7);
|
||||
resolve(success, fail, path, window.PERSISTENT, UNSANDBOXED, options);
|
||||
}
|
||||
|
||||
//resolve cdvfile://localhost/filesystemname/
|
||||
function resolveCdvFile(success, fail, request, options, size) {
|
||||
var components = /cdvfile:\/\/localhost\/([^\/]+)\/(.*)/.exec(request),
|
||||
fsType = components[1],
|
||||
path = components[2];
|
||||
if (fsType === 'persistent') {
|
||||
resolve(success, fail, path, window.PERSISTENT, SANDBOXED, options, size);
|
||||
}
|
||||
else if (fsType === 'temporary') {
|
||||
resolve(success, fail, path, window.TEMPORARY, SANDBOXED, options, size);
|
||||
}
|
||||
else if (fsType === 'root') {
|
||||
resolve(success, fail, path, window.PERSISTENT, UNSANDBOXED, options);
|
||||
}
|
||||
else {
|
||||
fail(FileError.NOT_FOUND_ERR);
|
||||
}
|
||||
}
|
||||
|
||||
//resolve local:///
|
||||
function resolveLocal(success, fail, request, options) {
|
||||
var path = localPath + request.substring(8);
|
||||
resolve(success, fail, path, window.PERSISTENT, UNSANDBOXED, options);
|
||||
}
|
||||
|
||||
//validate parameters and set sandbox
|
||||
function resolve(success, fail, path, fsType, sandbox, options, size) {
|
||||
options = options || { create: false };
|
||||
size = size || info.MAX_SIZE;
|
||||
if (size > info.MAX_SIZE) {
|
||||
//bb10 does not respect quota; fail at unreasonably large size
|
||||
fail(FileError.QUOTA_EXCEEDED_ERR);
|
||||
} else if (path.indexOf(':') > -1) {
|
||||
//files with : character are not valid in Cordova apps
|
||||
fail(FileError.ENCODING_ERR);
|
||||
} else {
|
||||
requestAnimationFrame(function () {
|
||||
cordova.exec(function () {
|
||||
requestAnimationFrame(function () {
|
||||
resolveNative(success, fail, path, fsType, options, size);
|
||||
});
|
||||
}, fail, 'File', 'setSandbox', [sandbox], false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//find path using webkit file system
|
||||
function resolveNative(success, fail, path, fsType, options, size) {
|
||||
window.webkitRequestFileSystem(
|
||||
fsType,
|
||||
size,
|
||||
function (fs) {
|
||||
if (path === '') {
|
||||
//no path provided, call success with root file system
|
||||
success(createEntryFromNative(fs.root));
|
||||
} else {
|
||||
//otherwise attempt to resolve as file
|
||||
fs.root.getFile(
|
||||
path,
|
||||
options,
|
||||
function (entry) {
|
||||
success(createEntryFromNative(entry));
|
||||
},
|
||||
function (fileError) {
|
||||
//file not found, attempt to resolve as directory
|
||||
fs.root.getDirectory(
|
||||
path,
|
||||
options,
|
||||
function (entry) {
|
||||
success(createEntryFromNative(entry));
|
||||
},
|
||||
function (dirError) {
|
||||
//path cannot be resolved
|
||||
if (fileError.code === FileError.INVALID_MODIFICATION_ERR &&
|
||||
options.exclusive) {
|
||||
//mobile-spec expects this error code
|
||||
fail(FileError.PATH_EXISTS_ERR);
|
||||
} else {
|
||||
fail(FileError.NOT_FOUND_ERR);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
33
plugins/cordova-plugin-file/www/blackberry10/setMetadata.js
vendored
Normal file
33
plugins/cordova-plugin-file/www/blackberry10/setMetadata.js
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* setMetadata
|
||||
*
|
||||
* BB10 OS does not support setting file metadata via HTML5 File System
|
||||
*/
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
console.error("setMetadata not supported on BB10", arguments);
|
||||
if (typeof(fail) === 'function') {
|
||||
fail();
|
||||
}
|
||||
};
|
||||
74
plugins/cordova-plugin-file/www/blackberry10/truncate.js
vendored
Normal file
74
plugins/cordova-plugin-file/www/blackberry10/truncate.js
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* truncate
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of file to truncate
|
||||
* 1 - start position
|
||||
* OUT:
|
||||
* success - new length of file
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
length = args[1],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data.loaded);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
fs.nativeEntry.file(function (file) {
|
||||
var reader = new FileReader()._realReader;
|
||||
reader.onloadend = function () {
|
||||
var contents = new Uint8Array(this.result).subarray(0, length);
|
||||
blob = new Blob([contents]);
|
||||
window.requestAnimationFrame(function () {
|
||||
fs.nativeEntry.createWriter(function (fileWriter) {
|
||||
fileWriter.onwriteend = onSuccess;
|
||||
fileWriter.onerror = onFail;
|
||||
fileWriter.write(blob);
|
||||
}, onFail);
|
||||
});
|
||||
};
|
||||
reader.onerror = onFail;
|
||||
reader.readAsArrayBuffer(file);
|
||||
}, onFail);
|
||||
});
|
||||
}, onFail, [uri]);
|
||||
};
|
||||
73
plugins/cordova-plugin-file/www/blackberry10/write.js
vendored
Normal file
73
plugins/cordova-plugin-file/www/blackberry10/write.js
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* write
|
||||
*
|
||||
* IN:
|
||||
* args
|
||||
* 0 - URL of file to write
|
||||
* 1 - data to write
|
||||
* 2 - offset
|
||||
* 3 - isBinary
|
||||
* OUT:
|
||||
* success - bytes written
|
||||
* fail - FileError
|
||||
*/
|
||||
|
||||
var resolve = cordova.require('cordova-plugin-file.resolveLocalFileSystemURIProxy'),
|
||||
requestAnimationFrame = cordova.require('cordova-plugin-file.bb10RequestAnimationFrame');
|
||||
|
||||
module.exports = function (success, fail, args) {
|
||||
var uri = args[0],
|
||||
data = args[1],
|
||||
offset = args[2],
|
||||
isBinary = args[3],
|
||||
onSuccess = function (data) {
|
||||
if (typeof success === 'function') {
|
||||
success(data.loaded);
|
||||
}
|
||||
},
|
||||
onFail = function (error) {
|
||||
if (typeof fail === 'function') {
|
||||
if (error && error.code) {
|
||||
fail(error.code);
|
||||
} else if (error && error.target && error.target.code) {
|
||||
fail(error.target.code);
|
||||
} else {
|
||||
fail(error);
|
||||
}
|
||||
}
|
||||
};
|
||||
resolve(function (fs) {
|
||||
requestAnimationFrame(function () {
|
||||
fs.nativeEntry.createWriter(function (writer) {
|
||||
var blob = new Blob([data]);
|
||||
if (offset) {
|
||||
writer.seek(offset);
|
||||
}
|
||||
writer.onwriteend = onSuccess;
|
||||
writer.onerror = onFail;
|
||||
writer.write(blob);
|
||||
}, onFail);
|
||||
});
|
||||
}, fail, [uri, { create: true }]);
|
||||
};
|
||||
31
plugins/cordova-plugin-file/www/browser/FileSystem.js
vendored
Normal file
31
plugins/cordova-plugin-file/www/browser/FileSystem.js
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*global FILESYSTEM_PREFIX: true, module*/
|
||||
|
||||
FILESYSTEM_PREFIX = "file:///";
|
||||
|
||||
module.exports = {
|
||||
__format__: function(fullPath) {
|
||||
return (FILESYSTEM_PREFIX + this.name + (fullPath[0] === '/' ? '' : '/') + encodeURI(fullPath));
|
||||
}
|
||||
};
|
||||
|
||||
187
plugins/cordova-plugin-file/www/browser/Preparing.js
vendored
Normal file
187
plugins/cordova-plugin-file/www/browser/Preparing.js
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*global require*/
|
||||
|
||||
//Only Chrome uses this file.
|
||||
var isChrome = window.webkitRequestFileSystem && window.webkitResolveLocalFileSystemURL;
|
||||
if (!isChrome) {
|
||||
return;
|
||||
}
|
||||
|
||||
var channel = require('cordova/channel');
|
||||
var FileError = require('./FileError');
|
||||
var PERSISTENT_FS_QUOTA = 5 * 1024 * 1024;
|
||||
var filePluginIsReadyEvent = new Event('filePluginIsReady');
|
||||
|
||||
var entryFunctionsCreated = false;
|
||||
var quotaWasRequested = false;
|
||||
var eventWasThrown = false;
|
||||
|
||||
if (!window.requestFileSystem) {
|
||||
window.requestFileSystem = function(type, size, win, fail) {
|
||||
if (fail) {
|
||||
fail("Not supported");
|
||||
}
|
||||
};
|
||||
} else {
|
||||
window.requestFileSystem(window.TEMPORARY, 1, createFileEntryFunctions, function() {});
|
||||
}
|
||||
|
||||
if (!window.resolveLocalFileSystemURL) {
|
||||
window.resolveLocalFileSystemURL = function(url, win, fail) {
|
||||
if(fail) {
|
||||
fail("Not supported");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Resolves a filesystem entry by its path - which is passed either in standard (filesystem:file://) or
|
||||
// Cordova-specific (cdvfile://) universal way.
|
||||
// Aligns with specification: http://www.w3.org/TR/2011/WD-file-system-api-20110419/#widl-LocalFileSystem-resolveLocalFileSystemURL
|
||||
var nativeResolveLocalFileSystemURL = window.resolveLocalFileSystemURL || window.webkitResolveLocalFileSystemURL;
|
||||
window.resolveLocalFileSystemURL = function(url, win, fail) {
|
||||
/* If url starts with `cdvfile` then we need convert it to Chrome real url first:
|
||||
cdvfile://localhost/persistent/path/to/file -> filesystem:file://persistent/path/to/file */
|
||||
if (url.trim().substr(0,7) === "cdvfile") {
|
||||
/* Quirk:
|
||||
Plugin supports cdvfile://localhost (local resources) only.
|
||||
I.e. external resources are not supported via cdvfile. */
|
||||
if (url.indexOf("cdvfile://localhost") !== -1) {
|
||||
// Browser supports temporary and persistent only
|
||||
var indexPersistent = url.indexOf('persistent');
|
||||
var indexTemporary = url.indexOf('temporary');
|
||||
|
||||
/* Chrome urls start with 'filesystem:' prefix. See quirk:
|
||||
toURL function in Chrome returns filesystem:-prefixed path depending on application host.
|
||||
For example, filesystem:file:///persistent/somefile.txt,
|
||||
filesystem:http://localhost:8080/persistent/somefile.txt. */
|
||||
var prefix = 'filesystem:file:///';
|
||||
if (location.protocol !== 'file:') {
|
||||
prefix = 'filesystem:' + location.origin + '/';
|
||||
}
|
||||
|
||||
var result;
|
||||
if (indexPersistent !== -1) {
|
||||
// cdvfile://localhost/persistent/path/to/file -> filesystem:file://persistent/path/to/file
|
||||
// or filesystem:http://localhost:8080/persistent/path/to/file
|
||||
result = prefix + 'persistent' + url.substr(indexPersistent + 10);
|
||||
nativeResolveLocalFileSystemURL(result, win, fail);
|
||||
return;
|
||||
}
|
||||
|
||||
if (indexTemporary !== -1) {
|
||||
// cdvfile://localhost/temporary/path/to/file -> filesystem:file://temporary/path/to/file
|
||||
// or filesystem:http://localhost:8080/temporary/path/to/file
|
||||
result = prefix + 'temporary' + url.substr(indexTemporary + 9);
|
||||
nativeResolveLocalFileSystemURL(result, win, fail);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// cdvfile other than local file resource is not supported
|
||||
fail && fail(new FileError(FileError.ENCODING_ERR));
|
||||
} else {
|
||||
nativeResolveLocalFileSystemURL(url, win, fail);
|
||||
}
|
||||
};
|
||||
|
||||
function createFileEntryFunctions(fs) {
|
||||
fs.root.getFile('todelete_658674_833_4_cdv', {create: true}, function(fileEntry) {
|
||||
var fileEntryType = Object.getPrototypeOf(fileEntry);
|
||||
var entryType = Object.getPrototypeOf(fileEntryType);
|
||||
|
||||
// Save the original method
|
||||
var origToURL = entryType.toURL;
|
||||
entryType.toURL = function () {
|
||||
var origURL = origToURL.call(this);
|
||||
if (this.isDirectory && origURL.substr(-1) !== '/') {
|
||||
return origURL + '/';
|
||||
}
|
||||
return origURL;
|
||||
};
|
||||
|
||||
entryType.toNativeURL = function () {
|
||||
console.warn("DEPRECATED: Update your code to use 'toURL'");
|
||||
return this.toURL();
|
||||
};
|
||||
|
||||
entryType.toInternalURL = function() {
|
||||
if (this.toURL().indexOf("persistent") > -1) {
|
||||
return "cdvfile://localhost/persistent" + this.fullPath;
|
||||
}
|
||||
|
||||
if (this.toURL().indexOf("temporary") > -1) {
|
||||
return "cdvfile://localhost/temporary" + this.fullPath;
|
||||
}
|
||||
};
|
||||
|
||||
entryType.setMetadata = function(win, fail /*, metadata*/) {
|
||||
fail && fail("Not supported");
|
||||
};
|
||||
|
||||
fileEntry.createWriter(function(writer) {
|
||||
var originalWrite = writer.write;
|
||||
var writerProto = Object.getPrototypeOf(writer);
|
||||
writerProto.write = function(blob) {
|
||||
if(blob instanceof Blob) {
|
||||
originalWrite.apply(this, [blob]);
|
||||
} else {
|
||||
var realBlob = new Blob([blob]);
|
||||
originalWrite.apply(this, [realBlob]);
|
||||
}
|
||||
};
|
||||
|
||||
fileEntry.remove(function(){ entryFunctionsCreated = true; }, function(){ /* empty callback */ });
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
window.initPersistentFileSystem = function(size, win, fail) {
|
||||
if (navigator.webkitPersistentStorage) {
|
||||
navigator.webkitPersistentStorage.requestQuota(size, win, fail);
|
||||
return;
|
||||
}
|
||||
|
||||
fail("This browser does not support this function");
|
||||
};
|
||||
|
||||
window.isFilePluginReadyRaised = function () { return eventWasThrown; };
|
||||
|
||||
window.initPersistentFileSystem(PERSISTENT_FS_QUOTA, function() {
|
||||
console.log('Persistent fs quota granted');
|
||||
quotaWasRequested = true;
|
||||
}, function(e){
|
||||
console.log('Error occured while trying to request Persistent fs quota: ' + JSON.stringify(e));
|
||||
});
|
||||
|
||||
channel.onCordovaReady.subscribe(function () {
|
||||
function dispatchEventIfReady() {
|
||||
if (entryFunctionsCreated && quotaWasRequested) {
|
||||
window.dispatchEvent(filePluginIsReadyEvent);
|
||||
eventWasThrown = true;
|
||||
} else {
|
||||
setTimeout(dispatchEventIfReady, 100);
|
||||
}
|
||||
}
|
||||
|
||||
dispatchEventIfReady();
|
||||
}, false);
|
||||
63
plugins/cordova-plugin-file/www/fileSystemPaths.js
vendored
Normal file
63
plugins/cordova-plugin-file/www/fileSystemPaths.js
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
var channel = require('cordova/channel');
|
||||
|
||||
exports.file = {
|
||||
// Read-only directory where the application is installed.
|
||||
applicationDirectory: null,
|
||||
// Root of app's private writable storage
|
||||
applicationStorageDirectory: null,
|
||||
// Where to put app-specific data files.
|
||||
dataDirectory: null,
|
||||
// Cached files that should survive app restarts.
|
||||
// Apps should not rely on the OS to delete files in here.
|
||||
cacheDirectory: null,
|
||||
// Android: the application space on external storage.
|
||||
externalApplicationStorageDirectory: null,
|
||||
// Android: Where to put app-specific data files on external storage.
|
||||
externalDataDirectory: null,
|
||||
// Android: the application cache on external storage.
|
||||
externalCacheDirectory: null,
|
||||
// Android: the external storage (SD card) root.
|
||||
externalRootDirectory: null,
|
||||
// iOS: Temp directory that the OS can clear at will.
|
||||
tempDirectory: null,
|
||||
// iOS: Holds app-specific files that should be synced (e.g. to iCloud).
|
||||
syncedDataDirectory: null,
|
||||
// iOS: Files private to the app, but that are meaningful to other applciations (e.g. Office files)
|
||||
documentsDirectory: null,
|
||||
// BlackBerry10: Files globally available to all apps
|
||||
sharedDirectory: null
|
||||
};
|
||||
|
||||
channel.waitForInitialization('onFileSystemPathsReady');
|
||||
channel.onCordovaReady.subscribe(function() {
|
||||
function after(paths) {
|
||||
for (var k in paths) {
|
||||
exports.file[k] = paths[k];
|
||||
}
|
||||
channel.initializationComplete('onFileSystemPathsReady');
|
||||
}
|
||||
exec(after, null, 'File', 'requestAllPaths', []);
|
||||
});
|
||||
|
||||
44
plugins/cordova-plugin-file/www/fileSystems-roots.js
vendored
Normal file
44
plugins/cordova-plugin-file/www/fileSystems-roots.js
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
// Map of fsName -> FileSystem.
|
||||
var fsMap = null;
|
||||
var FileSystem = require('./FileSystem');
|
||||
var exec = require('cordova/exec');
|
||||
|
||||
// Overridden by Android, BlackBerry 10 and iOS to populate fsMap.
|
||||
require('./fileSystems').getFs = function(name, callback) {
|
||||
if (fsMap) {
|
||||
callback(fsMap[name]);
|
||||
} else {
|
||||
exec(success, null, "File", "requestAllFileSystems", []);
|
||||
function success(response) {
|
||||
fsMap = {};
|
||||
for (var i = 0; i < response.length; ++i) {
|
||||
var fsRoot = response[i];
|
||||
var fs = new FileSystem(fsRoot.filesystemName, fsRoot);
|
||||
fsMap[fs.name] = fs;
|
||||
}
|
||||
callback(fsMap[name]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
25
plugins/cordova-plugin-file/www/fileSystems.js
vendored
Normal file
25
plugins/cordova-plugin-file/www/fileSystems.js
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
// Overridden by Android, BlackBerry 10 and iOS to populate fsMap.
|
||||
module.exports.getFs = function(name, callback) {
|
||||
callback(null);
|
||||
};
|
||||
29
plugins/cordova-plugin-file/www/firefoxos/FileSystem.js
vendored
Normal file
29
plugins/cordova-plugin-file/www/firefoxos/FileSystem.js
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
FILESYSTEM_PREFIX = "file:///";
|
||||
|
||||
module.exports = {
|
||||
__format__: function(fullPath) {
|
||||
return (FILESYSTEM_PREFIX + this.name + (fullPath[0] === '/' ? '' : '/') + encodeURI(fullPath));
|
||||
}
|
||||
};
|
||||
|
||||
30
plugins/cordova-plugin-file/www/ios/FileSystem.js
vendored
Normal file
30
plugins/cordova-plugin-file/www/ios/FileSystem.js
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
FILESYSTEM_PROTOCOL = "cdvfile";
|
||||
|
||||
module.exports = {
|
||||
__format__: function(fullPath) {
|
||||
var path = ('/'+this.name+(fullPath[0]==='/'?'':'/')+encodeURI(fullPath)).replace('//','/');
|
||||
return FILESYSTEM_PROTOCOL + '://localhost' + path;
|
||||
}
|
||||
};
|
||||
|
||||
76
plugins/cordova-plugin-file/www/requestFileSystem.js
vendored
Normal file
76
plugins/cordova-plugin-file/www/requestFileSystem.js
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
//For browser platform: not all browsers use this file.
|
||||
function checkBrowser() {
|
||||
if (cordova.platformId === "browser" && navigator.userAgent.search(/Chrome/) > 0) {
|
||||
var requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
|
||||
module.exports = requestFileSystem;
|
||||
return;
|
||||
}
|
||||
}
|
||||
checkBrowser();
|
||||
|
||||
var argscheck = require('cordova/argscheck'),
|
||||
FileError = require('./FileError'),
|
||||
FileSystem = require('./FileSystem'),
|
||||
exec = require('cordova/exec');
|
||||
var fileSystems = require('./fileSystems');
|
||||
|
||||
/**
|
||||
* Request a file system in which to store application data.
|
||||
* @param type local file system type
|
||||
* @param size indicates how much storage space, in bytes, the application expects to need
|
||||
* @param successCallback invoked with a FileSystem object
|
||||
* @param errorCallback invoked if error occurs retrieving file system
|
||||
*/
|
||||
var requestFileSystem = function(type, size, successCallback, errorCallback) {
|
||||
argscheck.checkArgs('nnFF', 'requestFileSystem', arguments);
|
||||
var fail = function(code) {
|
||||
errorCallback && errorCallback(new FileError(code));
|
||||
};
|
||||
|
||||
if (type < 0) {
|
||||
fail(FileError.SYNTAX_ERR);
|
||||
} else {
|
||||
// if successful, return a FileSystem object
|
||||
var success = function(file_system) {
|
||||
if (file_system) {
|
||||
if (successCallback) {
|
||||
fileSystems.getFs(file_system.name, function(fs) {
|
||||
// This should happen only on platforms that haven't implemented requestAllFileSystems (windows)
|
||||
if (!fs) {
|
||||
fs = new FileSystem(file_system.name, file_system.root);
|
||||
}
|
||||
successCallback(fs);
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
// no FileSystem object returned
|
||||
fail(FileError.NOT_FOUND_ERR);
|
||||
}
|
||||
};
|
||||
exec(success, fail, "File", "requestFileSystem", [type, size]);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = requestFileSystem;
|
||||
87
plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js
vendored
Normal file
87
plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
//For browser platform: not all browsers use overrided `resolveLocalFileSystemURL`.
|
||||
function checkBrowser() {
|
||||
if (cordova.platformId === "browser" && navigator.userAgent.search(/Chrome/) > 0) {
|
||||
var requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
|
||||
module.exports = requestFileSystem;
|
||||
return;
|
||||
}
|
||||
}
|
||||
checkBrowser();
|
||||
|
||||
var argscheck = require('cordova/argscheck'),
|
||||
DirectoryEntry = require('./DirectoryEntry'),
|
||||
FileEntry = require('./FileEntry'),
|
||||
FileError = require('./FileError'),
|
||||
exec = require('cordova/exec');
|
||||
var fileSystems = require('./fileSystems');
|
||||
|
||||
/**
|
||||
* Look up file system Entry referred to by local URI.
|
||||
* @param {DOMString} uri URI referring to a local file or directory
|
||||
* @param successCallback invoked with Entry object corresponding to URI
|
||||
* @param errorCallback invoked if error occurs retrieving file system entry
|
||||
*/
|
||||
module.exports.resolveLocalFileSystemURL = function(uri, successCallback, errorCallback) {
|
||||
argscheck.checkArgs('sFF', 'resolveLocalFileSystemURI', arguments);
|
||||
// error callback
|
||||
var fail = function(error) {
|
||||
errorCallback && errorCallback(new FileError(error));
|
||||
};
|
||||
// sanity check for 'not:valid:filename' or '/not:valid:filename'
|
||||
// file.spec.12 window.resolveLocalFileSystemURI should error (ENCODING_ERR) when resolving invalid URI with leading /.
|
||||
if(!uri || uri.split(":").length > 2) {
|
||||
setTimeout( function() {
|
||||
fail(FileError.ENCODING_ERR);
|
||||
},0);
|
||||
return;
|
||||
}
|
||||
// if successful, return either a file or directory entry
|
||||
var success = function(entry) {
|
||||
if (entry) {
|
||||
if (successCallback) {
|
||||
// create appropriate Entry object
|
||||
var fsName = entry.filesystemName || (entry.filesystem && entry.filesystem.name) || (entry.filesystem == window.PERSISTENT ? 'persistent' : 'temporary');
|
||||
fileSystems.getFs(fsName, function(fs) {
|
||||
// This should happen only on platforms that haven't implemented requestAllFileSystems (windows)
|
||||
if (!fs) {
|
||||
fs = new FileSystem(fsName, {name:"", fullPath:"/"});
|
||||
}
|
||||
var result = (entry.isDirectory) ? new DirectoryEntry(entry.name, entry.fullPath, fs, entry.nativeURL) : new FileEntry(entry.name, entry.fullPath, fs, entry.nativeURL);
|
||||
successCallback(result);
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
// no Entry object returned
|
||||
fail(FileError.NOT_FOUND_ERR);
|
||||
}
|
||||
};
|
||||
|
||||
exec(success, fail, "File", "resolveLocalFileSystemURI", [uri]);
|
||||
};
|
||||
|
||||
module.exports.resolveLocalFileSystemURI = function() {
|
||||
console.log("resolveLocalFileSystemURI is deprecated. Please call resolveLocalFileSystemURL instead.");
|
||||
module.exports.resolveLocalFileSystemURL.apply(this, arguments);
|
||||
};
|
||||
34
plugins/cordova-plugin-file/www/ubuntu/FileSystem.js
vendored
Normal file
34
plugins/cordova-plugin-file/www/ubuntu/FileSystem.js
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
FILESYSTEM_PROTOCOL = "cdvfile";
|
||||
|
||||
module.exports = {
|
||||
__format__: function(fullPath) {
|
||||
if (this.name === 'content') {
|
||||
return 'content:/' + fullPath;
|
||||
}
|
||||
var path = ('/' + this.name + (fullPath[0] === '/' ? '' : '/') + encodeURI(fullPath)).replace('//','/');
|
||||
|
||||
return FILESYSTEM_PROTOCOL + '://localhost' + path;
|
||||
}
|
||||
};
|
||||
|
||||
135
plugins/cordova-plugin-file/www/ubuntu/FileWriter.js
vendored
Normal file
135
plugins/cordova-plugin-file/www/ubuntu/FileWriter.js
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec'),
|
||||
FileError = require('./FileError'),
|
||||
ProgressEvent = require('./ProgressEvent');
|
||||
|
||||
function write(data) {
|
||||
var that=this;
|
||||
var supportsBinary = (typeof window.Blob !== 'undefined' && typeof window.ArrayBuffer !== 'undefined');
|
||||
var isBinary;
|
||||
|
||||
// Check to see if the incoming data is a blob
|
||||
if (data instanceof File || (supportsBinary && data instanceof Blob)) {
|
||||
var fileReader = new FileReader();
|
||||
fileReader.onload = function() {
|
||||
// Call this method again, with the arraybuffer as argument
|
||||
FileWriter.prototype.write.call(that, this.result);
|
||||
};
|
||||
if (supportsBinary) {
|
||||
fileReader.readAsArrayBuffer(data);
|
||||
} else {
|
||||
fileReader.readAsText(data);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Mark data type for safer transport over the binary bridge
|
||||
isBinary = supportsBinary && (data instanceof ArrayBuffer);
|
||||
|
||||
// Throw an exception if we are already writing a file
|
||||
if (this.readyState === FileWriter.WRITING) {
|
||||
throw new FileError(FileError.INVALID_STATE_ERR);
|
||||
}
|
||||
|
||||
// WRITING state
|
||||
this.readyState = FileWriter.WRITING;
|
||||
|
||||
var me = this;
|
||||
|
||||
// If onwritestart callback
|
||||
if (typeof me.onwritestart === "function") {
|
||||
me.onwritestart(new ProgressEvent("writestart", {"target":me}));
|
||||
}
|
||||
|
||||
if (data instanceof ArrayBuffer || data.buffer instanceof ArrayBuffer) {
|
||||
data = new Uint8Array(data);
|
||||
var binary = "";
|
||||
for (var i = 0; i < data.byteLength; i++) {
|
||||
binary += String.fromCharCode(data[i]);
|
||||
}
|
||||
data = binary;
|
||||
}
|
||||
|
||||
var prefix = "file://localhost";
|
||||
var path = this.localURL;
|
||||
if (path.substr(0, prefix.length) == prefix) {
|
||||
path = path.substr(prefix.length);
|
||||
}
|
||||
// Write file
|
||||
exec(
|
||||
// Success callback
|
||||
function(r) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me.readyState === FileWriter.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// position always increases by bytes written because file would be extended
|
||||
me.position += r;
|
||||
// The length of the file is now where we are done writing.
|
||||
|
||||
me.length = me.position;
|
||||
|
||||
// DONE state
|
||||
me.readyState = FileWriter.DONE;
|
||||
|
||||
// If onwrite callback
|
||||
if (typeof me.onwrite === "function") {
|
||||
me.onwrite(new ProgressEvent("write", {"target":me}));
|
||||
}
|
||||
|
||||
// If onwriteend callback
|
||||
if (typeof me.onwriteend === "function") {
|
||||
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
|
||||
}
|
||||
},
|
||||
// Error callback
|
||||
function(e) {
|
||||
// If DONE (cancelled), then don't do anything
|
||||
if (me.readyState === FileWriter.DONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// DONE state
|
||||
me.readyState = FileWriter.DONE;
|
||||
|
||||
// Save error
|
||||
me.error = new FileError(e);
|
||||
|
||||
// If onerror callback
|
||||
if (typeof me.onerror === "function") {
|
||||
me.onerror(new ProgressEvent("error", {"target":me}));
|
||||
}
|
||||
|
||||
// If onwriteend callback
|
||||
if (typeof me.onwriteend === "function") {
|
||||
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
|
||||
}
|
||||
}, "File", "write", [path, data, this.position, isBinary]);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
write: write
|
||||
};
|
||||
|
||||
require("cordova/exec/proxy").add("FileWriter", module.exports);
|
||||
53
plugins/cordova-plugin-file/www/ubuntu/fileSystems-roots.js
vendored
Normal file
53
plugins/cordova-plugin-file/www/ubuntu/fileSystems-roots.js
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
var fsMap = null;
|
||||
var FileSystem = require('./FileSystem');
|
||||
var LocalFileSystem = require('./LocalFileSystem');
|
||||
var exec = require('cordova/exec');
|
||||
|
||||
var requestFileSystem = function(type, size, successCallback) {
|
||||
var success = function(file_system) {
|
||||
if (file_system) {
|
||||
if (successCallback) {
|
||||
fs = new FileSystem(file_system.name, file_system.root);
|
||||
successCallback(fs);
|
||||
}
|
||||
}
|
||||
};
|
||||
exec(success, null, "File", "requestFileSystem", [type, size]);
|
||||
};
|
||||
|
||||
require('./fileSystems').getFs = function(name, callback) {
|
||||
if (fsMap) {
|
||||
callback(fsMap[name]);
|
||||
} else {
|
||||
requestFileSystem(LocalFileSystem.PERSISTENT, 1, function(fs) {
|
||||
requestFileSystem(LocalFileSystem.TEMPORARY, 1, function(tmp) {
|
||||
fsMap = {};
|
||||
fsMap[tmp.name] = tmp;
|
||||
fsMap[fs.name] = fs;
|
||||
callback(fsMap[name]);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
49
plugins/cordova-plugin-file/www/wp/FileUploadOptions.js
vendored
Normal file
49
plugins/cordova-plugin-file/www/wp/FileUploadOptions.js
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Options to customize the HTTP request used to upload files.
|
||||
* @constructor
|
||||
* @param fileKey {String} Name of file request parameter.
|
||||
* @param fileName {String} Filename to be used by the server. Defaults to image.jpg.
|
||||
* @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg.
|
||||
* @param params {Object} Object with key: value params to send to the server.
|
||||
*/
|
||||
var FileUploadOptions = function(fileKey, fileName, mimeType, params, headers, httpMethod) {
|
||||
this.fileKey = fileKey || null;
|
||||
this.fileName = fileName || null;
|
||||
this.mimeType = mimeType || null;
|
||||
this.headers = headers || null;
|
||||
this.httpMethod = httpMethod || null;
|
||||
|
||||
if(params && typeof params != typeof "") {
|
||||
var arrParams = [];
|
||||
for(var v in params) {
|
||||
arrParams.push(v + "=" + params[v]);
|
||||
}
|
||||
this.params = encodeURIComponent(arrParams.join("&"));
|
||||
}
|
||||
else {
|
||||
this.params = params || null;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = FileUploadOptions;
|
||||
Reference in New Issue
Block a user