UNPKG

generator-landmark-connect

Version:
253 lines (210 loc) 6.89 kB
// TODO: add support for readFile -> readAsData // TODO: add support for readFile -> readAsBinaryString // TODO: add support for readFile -> readAsArrayBuffer // TODO: add functionality to define storage size in the getFilesystem() -> requestFileSystem() method // TODO: add documentation for FileError types // TODO: add abort() option to downloadFile and uploadFile methods. // TODO: add support for downloadFile and uploadFile options. (or detailed documentation) -> for fileKey, fileName, mimeType, headers // TODO: add support for onprogress property angular.module('ngCordova.plugins.file', []) //Filesystem (checkDir, createDir, checkFile, creatFile, removeFile, writeFile, readFile) .factory('$cordovaFile', ['$q', function ($q) { return { checkDir: function (dir) { var q = $q.defer(); getFilesystem().then( function (filesystem) { filesystem.root.getDirectory(dir, {create: false}, //Dir exists function () { q.resolve(); }, //Dir doesn't exist function () { q.reject(); } ); } ); return q.promise; }, createDir: function (dir, replaceBOOL) { getFilesystem().then( function (filesystem) { filesystem.root.getDirectory(dir, {create: true, exclusive: replaceBOOL}); } ); }, checkFile: function (filePath) { var q = $q.defer(); // Backward compatibility for previous function checkFile(dir, file) if (arguments.length == 2) { filePath = '/' + filePath + '/' + arguments[1]; } getFilesystem().then( function (filesystem) { filesystem.root.getFile(filePath, {create: false}, // File exists function () { q.resolve(); }, // File doesn't exist function () { q.reject(); } ); } ); return q.promise; }, createFile: function (filePath, replaceBOOL) { // Backward compatibility for previous function createFile(dir, file, replaceBOOL) if (arguments.length == 3) { filePath = '/' + filePath + '/' + arguments[1]; replaceBOOL = arguments[2]; } getFilesystem().then( function (filesystem) { filesystem.root.getFile(filePath, {create: true, exclusive: replaceBOOL}, function (success) { }, function (err) { }); } ); }, removeFile: function (filePath) { var q = $q.defer(); // Backward compatibility for previous function removeFile(dir, file) if (arguments.length == 2) { filePath = '/' + filePath + '/' + arguments[1]; } getFilesystem().then( function (filesystem) { filesystem.root.getFile(filePath, {create: false}, function (fileEntry) { fileEntry.remove(function () { q.resolve(); }); }); } ); return q.promise; }, writeFile: function (filePath, data) { var q = $q.defer(); getFilesystem().then( function (filesystem) { filesystem.root.getFile(filePath, {create: true}, function (fileEntry) { fileEntry.createWriter( function (fileWriter) { fileWriter.onwriteend = function(evt) { q.resolve(evt); } fileWriter.write(data); }, function (error) { q.reject(error); }); } ); } ); return q.promise; }, readFile: function (filePath) { var q = $q.defer(); // Backward compatibility for previous function readFile(dir, file) if (arguments.length == 2) { filePath = '/' + filePath + '/' + arguments[1]; } getFilesystem().then( function (filesystem) { filesystem.root.getFile(filePath, {create: false}, // success function (fileEntry) { fileEntry.file(function (file) { var reader = new FileReader(); reader.onloadend = function () { q.resolve(this.result); }; reader.readAsText(file); }); }, // error function (error) { q.reject(error); }); } ); return q.promise; }, readFileMetadata: function (filePath) { var q = $q.defer(); getFilesystem().then( function (filesystem) { filesystem.root.getFile(filePath, {create: false}, // success function (fileEntry) { fileEntry.file(function (file) { q.resolve(file); }); }, // error function (error) { q.reject(error); }); } ); return q.promise; }, downloadFile: function (source, filePath, trustAllHosts, options) { var q = $q.defer(); var fileTransfer = new FileTransfer(); var uri = encodeURI(source); fileTransfer.onprogress = function(progressEvent) { q.notify(progressEvent); }; fileTransfer.download( uri, filePath, function (entry) { q.resolve(entry); }, function (error) { q.reject(error); }, trustAllHosts, options); return q.promise; }, uploadFile: function (server, filePath, options) { var q = $q.defer(); var fileTransfer = new FileTransfer(); var uri = encodeURI(server); fileTransfer.onprogress = function(progressEvent) { q.notify(progressEvent); }; fileTransfer.upload( filePath, uri, function (result) { q.resolve(result); }, function (error) { q.reject(error); }, options) return q.promise } }; function getFilesystem() { var q = $q.defer(); window.requestFileSystem(LocalFileSystem.PERSISTENT, 1024 * 1024, function (filesystem) { q.resolve(filesystem); }, function (err) { q.reject(err); }); return q.promise; } }]);