From 3a754133dbc138390503341fd2e9beba3e43aa4b Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Fri, 27 Jan 2012 12:05:17 -0800
Subject: Merged old FileIO
---
js/io/system/config.xml | 6 -
js/io/system/coreioapi.js | 819 +++++++++++++++++++++++++++++++++++++++++++++
js/io/system/fileio.js | 0
js/io/system/filesystem.js | 78 ++---
js/io/system/projectio.js | 0
js/io/system/shellapi.js | 806 --------------------------------------------
6 files changed, 854 insertions(+), 855 deletions(-)
delete mode 100644 js/io/system/config.xml
create mode 100755 js/io/system/coreioapi.js
mode change 100644 => 100755 js/io/system/fileio.js
mode change 100644 => 100755 js/io/system/filesystem.js
mode change 100644 => 100755 js/io/system/projectio.js
delete mode 100644 js/io/system/shellapi.js
(limited to 'js/io/system')
diff --git a/js/io/system/config.xml b/js/io/system/config.xml
deleted file mode 100644
index 4660d647..00000000
--- a/js/io/system/config.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/js/io/system/coreioapi.js b/js/io/system/coreioapi.js
new file mode 100755
index 00000000..c920d8cd
--- /dev/null
+++ b/js/io/system/coreioapi.js
@@ -0,0 +1,819 @@
+/*
+This file contains proprietary software owned by Motorola Mobility, Inc.
+No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
+(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
+ */
+
+/* /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
+NOTES:
+These methods should only be access through the file and project IO classes.
+////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////// */
+var Montage = require("montage/core/core").Montage,
+ Component = require("montage/ui/component").Component;
+////////////////////////////////////////////////////////////////////////
+//Exporting as Project I/O
+exports.CoreIoApi = Montage.create(Component, {
+ ////////////////////////////////////////////////////////////////////
+ // private property containing the file service URL to use for all file IO calls
+ _fileServiceURL: {
+ enumerable: false,
+ value: "http://localhost:16380/file"
+ },
+ ////////////////////////////////////////////////////////////////////
+ // private property containing the directory service URL to use for all file IO calls
+ _directoryServiceURL: {
+ enumerable: false,
+ value: "http://localhost:16380/directory"
+ },
+ ////////////////////////////////////////////////////////////////////
+ // private helper to parse URIs and append them to the service URL
+ _prepareServiceURL: {
+ enumerable: false,
+ value: function(serviceURL, path) {
+ var urlOut = path.replace(/\\/g,"/");
+ urlOut = urlOut.replace(/:/g,"");
+ urlOut = encodeURI(urlOut);
+ //add leading / if not already there
+ if((urlOut.length > 0) && (urlOut.charAt(0) !== "/")){
+ urlOut = "/" + urlOut;
+ }
+ //remove extra / at the end
+ if((urlOut.length > 1) && (urlOut.charAt(urlOut.length - 1) === "/")){
+ urlOut = urlOut.substring(0, (urlOut.length - 1));
+ }
+
+ return serviceURL + urlOut;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Checks for the existence of a file
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the file exists
+ // 404 - the file does not exist
+ // 500 - unknown server error occurred
+ fileExists: {
+ enumerable: false,
+ value: function(file) {
+ //
+ var retValue = { success:null, status:null };
+ //
+ if(file && file.uri && file.uri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("GET", serviceURL, false);
+ xhr.setRequestHeader("check-existence-only", "true");
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Creates a new file at the specified path
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
+ // it can optionally contain the following properties
+ // contentType: string with the content type i.e. "text/plain". "text/plain" is assumed if this property is not specified
+ // contents: string containing the file contents. These contents will be saved to the new file.
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 201 - the file was created and contents were saved if they were passed
+ // 400 - the file already exists and could not be created
+ // 500 - unknown server error occurred
+ createFile: {
+ enumerable: false,
+ value: function(file) {
+ var retValue = { success:null, status:null };
+ if(file && file.uri && file.uri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("POST", serviceURL, false);
+ if(file.contentType && file.contentType.length)
+ xhr.setRequestHeader("Content-Type", file.contentType);
+ else
+ xhr.setRequestHeader("Content-Type", "text/plain");
+
+ if(file.contents && file.contents.length)
+ xhr.send(file.contents);
+ else
+ xhr.send();
+
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Save contents into an existing file at the specified path
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
+ // it can optionally contain the following properties
+ // contentType: string with the content type i.e. "text/plain". "text/plain" is assumed if this property is not specified
+ // contents: string containing the file contents. These contents will be saved to the new file.
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the file was saved
+ // 404 - the file specified does not exist
+ // 500 - unknown server error occurred
+ updateFile: {
+ enumerable: false,
+ value: function(file) {
+ var retValue = { success:null, status:null };
+ if(file && file.uri && file.uri.length && file.contents && file.contents.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("PUT", serviceURL, false);
+ if(file.contentType && file.contentType.length)
+ xhr.setRequestHeader("Content-Type", file.contentType);
+ else
+ xhr.setRequestHeader("Content-Type", "text/plain");
+
+ xhr.send(file.contents);
+
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Copies a file from one location to another
+ // Parameters:
+ // the file parameter must contain the following properties
+ // sourceUri: string value containing the full file path/URI to copy from i.e. "c:/foo/bar.html"
+ // destUri: string containing the full path/URI to copy to
+ // it can optionally contain the following properties
+ // overwriteDestination: bool indicating whether it is okay to overwrite the file specified at destUri if it already exists
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the file was copied
+ // 404 - the file specified in sourceUri does not exist
+ // 500 - unknown server error occurred
+ copyFile: {
+ enumerable: false,
+ value: function(file) {
+ var retValue = { success:null, status:null };
+ if(file && file.sourceUri && file.sourceUri.length && file.destUri && file.destUri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.destUri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("PUT", serviceURL, false);
+ xhr.setRequestHeader("sourceURI", file.sourceUri);
+ //
+ if(file.overwriteDestination && file.overwriteDestination === true) {
+ xhr.setRequestHeader("overwrite-destination", "true");
+ }
+ //
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Moves a file from one location to another
+ // Parameters:
+ // the file parameter must contain the following properties
+ // sourceUri: string value containing the full file path/URI to copy from i.e. "c:/foo/bar.html"
+ // destUri: string containing the full path/URI to copy to
+ // it can optionally contain the following properties
+ // overwriteDestination: bool indicating whether it is okay to overwrite the file specified at destUri if it already exists
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the file was moved
+ // 404 - the file specified in sourceUri does not exist
+ // 500 - unknown server error occurred
+ moveFile: {
+ enumerable: false,
+ value: function(file) {
+ var retValue = { success:null, status:null };
+ if(file && file.sourceUri && file.sourceUri.length && file.destUri && file.destUri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.destUri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("PUT", serviceURL, false);
+ xhr.setRequestHeader("sourceURI", file.sourceUri);
+ xhr.setRequestHeader("delete-source", "true");
+ //
+ if(file.overwriteDestination && file.overwriteDestination === true) {
+ xhr.setRequestHeader("overwrite-destination", "true");
+ }
+ //
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Deletes an existing file
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the file was deleted
+ // 404 - the file does not exist
+ // 500 - unknown server error occurred
+ deleteFile: {
+ enumerable: false,
+ value: function(file) {
+ var retValue = { success:null, status:null };
+ if(file && file.uri && file.uri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("DELETE", serviceURL, false);
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Reads an existing file
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // content: string containing the file contents
+ // status: int indicating the request HTTP status code
+ // 200 - the file was read and its contents were returned
+ // 404 - the file does not exist
+ // 500 - unknown server error occurred
+ openFile: {
+ enumerable: false,
+ value: function(file) {
+ //
+ var retValue = { success:null, content:null, status:null};
+ //
+ if(file && file.uri && file.uri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("GET", serviceURL, false);
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ if(xhr.status == 200) {
+ retValue.content = xhr.responseText;
+ }
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Create a new directory/folder
+ // Parameters:
+ // the dir parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/dir/subdir"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 201 - the directory was created
+ // 400 - the directory was unable to be created
+ // 500 - unknown server error occurred
+ createDirectory: {
+ enumerable: false,
+ value: function(dir) {
+ var retValue = { success:null, status:null };
+ if(dir && dir.uri && dir.uri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._directoryServiceURL, dir.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("POST", serviceURL, false);
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Delete a directory/folder
+ // Parameters:
+ // the dir parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/dir/subdir"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the directory was deleted
+ // 404 - the directory does not exist
+ // 500 - unknown server error occurred
+ deleteDirectory: {
+ enumerable: false,
+ value: function(dir) {
+ var retValue = { success:null, status:null };
+ if(dir && dir.uri && dir.uri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._directoryServiceURL, dir.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("DELETE", serviceURL, false);
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // List the contents of a directory/folder
+ // Parameters:
+ // the dir parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/dir/subdir"
+ // recursive: boolean true to list contents of all subdirectories as well. if this is not specified "false" is the default.
+ // returnType: string "all", "files", "directories". Specifies the types to return. if this is not specified, the default is "all"
+ // fileFilters: string containing the file extensions to include in the return listing. This list is semi-colon separated. i.e. "xml;html"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // content: string containing the JSON structure of the file contents
+ // status: int indicating the request HTTP status code
+ // 200 - the directory was read and the content JSON string was returned in dir.content
+ // 404 - the directory does not exist
+ // 500 - unknown server error occurred
+ getDirectoryContents: {
+ enumerable: false,
+ value: function(dir) {
+ var retValue = { success:null, content:null, status:null };
+ if(!!dir && (typeof dir.uri !== "undefined") && (dir.uri !== null) ) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._directoryServiceURL, dir.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("GET", serviceURL, false);
+ //
+ if(dir.recursive) {
+ xhr.setRequestHeader("recursive", dir.recursive.toString());
+ }
+
+ //
+ if (dir.fileFilters) {
+ xhr.setRequestHeader("file-filters", dir.fileFilters.toString());
+ }
+ //
+
+ //
+ if(dir.returnType) {
+ xhr.setRequestHeader("return-type", dir.returnType.toString());
+ }
+ //
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ if(xhr.status == 200) {
+ retValue.content = xhr.responseText;
+ }
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Check if a directory/folder exists
+ // Parameters:
+ // the dir parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/dir/subdir"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the directory exists
+ // 404 - the directory does not exist
+ // 500 - unknown server error occurred
+ directoryExists: {
+ enumerable: false,
+ value: function(dir) {
+ var retValue = { success:null, content:null, status:null };
+ if(dir && dir.uri && dir.uri.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._directoryServiceURL, dir.uri),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("GET", serviceURL, false);
+ xhr.setRequestHeader("check-existence-only", "true");
+ //
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // copies an existing directory/folder to a new location
+ // Parameters:
+ // the dir parameter must contain the following properties
+ // sourceUri: string value containing the full file path/URI to copy from i.e. "c:/foo/bar"
+ // destUri: string containing the full path/URI to copy to
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the operation succeeded
+ // 400 - the operation could not be performed because the destUri existed
+ // 404 - the source directory does not exist
+ // 500 - unknown server error occurred
+ copyDirectory: {
+ enumerable: false,
+ value: function(dir) {
+ return this._copyMoveDirHelper(dir.sourceUri, dir.destUri, "copy");
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Moves an existing directory/folder to a new location
+ // Parameters:
+ // the dir parameter must contain the following properties
+ // sourceUri: string value containing the full file path/URI to copy from i.e. "c:/foo/bar"
+ // destUri: string containing the full path/URI to move to
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the operation succeeded
+ // 400 - the operation could not be performed because the destUri existed
+ // 404 - the source directory does not exist
+ // 500 - unknown server error occurred
+ moveDirectory: {
+ enumerable: false,
+ value: function(dir) {
+ return this._copyMoveDirHelper(dir.sourceUri, dir.destUri, "move");
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Moves an existing directory/folder to a new location
+ // Parameters:
+ // the dir parameter must contain the following properties
+ // sourceUri: string value containing the full file path/URI to copy from i.e. "c:/foo/bar"
+ // newDirectoryName: string containing the new name of the directory i.e. "bar2"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - the operation succeeded
+ // 400 - the operation could not be performed because the destUri existed
+ // 404 - the source directory does not exist
+ // 500 - unknown server error occurred
+ renameDirectory: {
+ enumerable: false,
+ value: function(dir) {
+ return this._copyMoveDirHelper(dir.sourceUri, dir.sourceUri + "/" + dir.newDirectoryName, "move");
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ //Helper that is used by copyDirectory, moveDirectory, renameDirectory
+ _copyMoveDirHelper: {
+ enumerable: false,
+ value: function(sourceDir, destDir, operation) {
+ var retValue = {};
+ if(sourceDir && sourceDir.length && destDir && destDir.length && operation && operation.length) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._directoryServiceURL, destDir),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("PUT", serviceURL, false);
+ xhr.setRequestHeader("sourceURI", sourceDir);
+ xhr.setRequestHeader("operation", operation);
+ //
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ //
+ return retValue;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ // Checks if the file has been modified since it was last queried
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
+ // recursive: boolean true to check the modified date of all subdirectories as well. if this is not specified "false" is the default.
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 200 - the file has been modified
+ // 304 - the file has not been modified
+ // 404 - the file does not exist
+ // 500 - unknown server error occurred
+
+ isFileModified:{
+ enumerable:true,
+ writable:false,
+ value:function(file, lastQueriedTimestamp){
+ var retValue = { success:null, status:null };
+ if(file && file.uri && (typeof lastQueriedTimestamp !== "undefined")) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ xhr.open("GET", serviceURL, false);
+ xhr.setRequestHeader("if-modified-since", lastQueriedTimestamp);
+ xhr.send();
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ return retValue;
+ }
+ },
+
+ ////////////////////////////////////////////////////////////////////
+ // Checks if the directory content has been modified since it was last queried
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full directory path/URI i.e. "c:/foo/bar.html"
+ // recursive: boolean true to check the modified date of all subdirectories as well. if this is not specified "false" is the default.
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 200 - the file has been modified
+ // 304 - the file has not been modified
+ // 404 - the file does not exist
+ // 500 - unknown server error occurred
+
+ isDirectoryModified:{
+ enumerable:true,
+ writable:false,
+ value:function(file, lastQueriedTimestamp){
+ var retValue = { success:null, status:null };
+ if(file && file.uri && (typeof lastQueriedTimestamp !== "undefined")) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._directoryServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ xhr.open("GET", serviceURL, false);
+ xhr.setRequestHeader("if-modified-since", lastQueriedTimestamp);
+ xhr.send();
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ return retValue;
+ }
+ },
+
+ ////////////////////////////////////////////////////////////////////
+ // Checks if the file is writable
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - The file exists and response body has writable flag
+ // 404 - the file does not exist
+ // 500 - unknown server error occurred
+ //TODO:to be finalized
+ isFileWritable:{
+ enumerable:true,
+ writable:false,
+ value:function(file){
+ var retValue = { success:null, status:null };
+ if(file && file.uri) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ xhr.open("GET", serviceURL, false);
+ xhr.setRequestHeader("get-attributes", "true");
+ xhr.send();
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ if(xhr.status == 200) {
+ retValue.content = xhr.responseText;
+ }
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ return retValue;
+ }
+ },
+
+ ////////////////////////////////////////////////////////////////////
+ // Checks if the directory is writable
+ // Parameters:
+ // the file parameter must contain the following properties
+ // uri: string value containing the full directory path/URI i.e. "c:/foo"
+ //
+ // Return values:
+ // returns an object with two properties
+ // success: boolean indicating if the call succeeded or failed
+ // status: int indicating the request HTTP status code
+ // 204 - The file exists and response body has writable flag
+ // 404 - the file does not exist
+ // 500 - unknown server error occurred
+ //TODO:to be finalized
+ isDirectoryWritable:{
+ enumerable:true,
+ writable:false,
+ value:function(file){
+ var retValue = { success:null, status:null };
+ if(file && file.uri) {
+ try {
+ var serviceURL = this._prepareServiceURL(this._directoryServiceURL, file.uri),
+ xhr = new XMLHttpRequest();
+ xhr.open("GET", serviceURL, false);
+ xhr.setRequestHeader("get-attributes", "true");
+ xhr.send();
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ if(xhr.status == 200) {
+ retValue.content = xhr.responseText;
+ }
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ }
+ return retValue;
+ }
+ }
+
+
+
+});
+////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/js/io/system/fileio.js b/js/io/system/fileio.js
old mode 100644
new mode 100755
diff --git a/js/io/system/filesystem.js b/js/io/system/filesystem.js
old mode 100644
new mode 100755
index 54c16a05..cd158812
--- a/js/io/system/filesystem.js
+++ b/js/io/system/filesystem.js
@@ -4,31 +4,23 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/
-var FileIo = require("js/io/system/fileio").FileIo,
- ProjectIo = require("js/io/system/projectio").ProjectIo,
- ShellApi = require("js/io/system/shellapi").ShellApi,
- ComponentsPanelBase = require("js/panels/Components/ComponentsPanelBase.reel").ComponentsPanelBase;
+////////////////////////////////////////////////////////////////////////
+//
+var Montage = require("montage/core/core").Montage,
+ FileIo = require("js/io/system/fileio").FileIo,
+ ProjectIo = require("js/io/system/projectio").ProjectIo,
+ CoreIoApi = require("js/io/system/coreioapi").CoreIoApi;
////////////////////////////////////////////////////////////////////////
//Exporting as File System
-exports.FileSystem = (require("montage/core/core").Montage).create(Object.prototype, {
+exports.FileSystem = Montage.create(Object.prototype, {
////////////////////////////////////////////////////////////////////
//
- init: {
- enumerable: false,
- value: function () {
- //Called by NinjaMain
-
-
-
- //Calling Shell API to initialize
- ShellApi.init();
- }
- },
+
shellApiHandler :{
enumerable:true,
writable:false,
- value:ShellApi
+ value:CoreIoApi
},
@@ -78,8 +70,8 @@ exports.FileSystem = (require("montage/core/core").Montage).create(Object.protot
//documentManagerModule.DocumentManager.openDocument({"type": "html"});
} else {
//
- var file = {uri: ShellApi.openShellDialog({type: 'file', action: 'new'})}, type;
- var check = ShellApi.fileExists(file);
+ var file = {uri: CoreIoApi.openShellDialog({type: 'file', action: 'new'})}, type;
+ var check = CoreIoApi.fileExists(file);
@@ -117,13 +109,13 @@ exports.FileSystem = (require("montage/core/core").Montage).create(Object.protot
//TODO: Improve logic
//Checking for file to exist in files template folder
- var templateCheck = ShellApi.fileExists({uri: window.NativeShellApp.GetKnownFolder('appsource')+'\\document-templates\\files\\template.'+type}), content;
+ var templateCheck = CoreIoApi.fileExists({uri: window.NativeShellApp.GetKnownFolder('appsource')+'\\document-templates\\files\\template.'+type}), content;
//
if (templateCheck.success) {
switch (check.status) {
case 204:
//Template exists, so opening and getting contents to be used when creating file
- content = ShellApi.openFile({uri: 'template.'+type});
+ content = CoreIoApi.openFile({uri: 'template.'+type});
if (content.content) {
file.content = content.content;
} else {
@@ -169,7 +161,7 @@ switch (type.toLowerCase()) {
- var create = ShellApi.createFile(file);
+ var create = CoreIoApi.createFile(file);
if (create.success) {
switch (create.status) {
case 201:
@@ -239,8 +231,8 @@ switch (type.toLowerCase()) {
//documentManagerModule.DocumentManager.openDocument({"type": "html"});
} else {
//
- var directory = {uri: ShellApi.openShellDialog({type: 'directory', action: 'new'})};
- var check = ShellApi.directoryExists(directory);
+ var directory = {uri: CoreIoApi.openShellDialog({type: 'directory', action: 'new'})};
+ var check = CoreIoApi.directoryExists(directory);
//
if (check.success) {
switch (check.status) {
@@ -249,7 +241,7 @@ switch (type.toLowerCase()) {
break;
case 404:
//Directory does not exists, ready to be created
- var create = ShellApi.createDirectory(directory);
+ var create = CoreIoApi.createDirectory(directory);
if (create.success) {
switch (create.status) {
case 201:
@@ -294,7 +286,7 @@ switch (type.toLowerCase()) {
enumerable: false,
value: function (file) {
//Checking for file to exist
- var check = ShellApi.fileExists(file), createdFile = null;
+ var check = CoreIoApi.fileExists(file), createdFile = null;
//
if (check.success) {
switch (check.status) {
@@ -303,7 +295,7 @@ switch (type.toLowerCase()) {
break;
case 404:
//File does not exists, ready to be created
- var create = ShellApi.createFile(file);
+ var create = CoreIoApi.createFile(file);
if (create.success) {
switch (create.status) {
case 201:
@@ -357,7 +349,7 @@ switch (type.toLowerCase()) {
//TODO: Add cloud integration
} else {
//Getting file URI from native prompt
- uri = ShellApi.openShellDialog({type: 'file', action: 'open'});
+ uri = CoreIoApi.openShellDialog({type: 'file', action: 'open'});
}
}
//Checking for a valid URI
@@ -378,7 +370,7 @@ switch (type.toLowerCase()) {
//Opening file via shell
function shellOpenFile (f) {
//Getting string from file
- var doc = ShellApi.openFile({uri: f}), type = f.split('.');
+ var doc = CoreIoApi.openFile({uri: f}), type = f.split('.');
//Splitting to get file extension
type = type[type.length-1];
//TODO: Fix this HACK to generate string
@@ -387,7 +379,7 @@ switch (type.toLowerCase()) {
dir_str += dir[i] + '\\';
}
//Starting an instance of the shell server on directory
- server = ShellApi.startServer(dir_str);
+ server = CoreIoApi.startServer(dir_str);
//Opening file in app
FileIo.open(doc, type, f, server);
}
@@ -439,7 +431,7 @@ switch (type.toLowerCase()) {
value: function (directory) {
var mjs_dir = {uri: directory.uri};
mjs_dir.uri += '\\m-js';
- var mjs_check = ShellApi.directoryExists(mjs_dir);
+ var mjs_check = CoreIoApi.directoryExists(mjs_dir);
//
if (mjs_check.success) {
switch (mjs_check.status) {
@@ -455,7 +447,7 @@ switch (type.toLowerCase()) {
//Creating m-js folder and copying contents
- var mjs_folder = ShellApi.createDirectory(mjs_dir);
+ var mjs_folder = CoreIoApi.createDirectory(mjs_dir);
if (mjs_folder.success) {
switch (mjs_folder.status) {
case 201:
@@ -463,12 +455,12 @@ switch (type.toLowerCase()) {
var temp_dir = window.NativeShellApp.GetKnownFolder('appsource')+'\\user-document-templates\\montage-application\\systemio\\new\\project\\montage';
- var mjs_deps = ShellApi.createDirectory({uri: mjs_dir.uri+'\\deps'});
+ var mjs_deps = CoreIoApi.createDirectory({uri: mjs_dir.uri+'\\deps'});
//Folder created, now copying contents
- var copy_lib = ShellApi.copyDirectory({sourceUri: window.NativeShellApp.GetKnownFolder('frameworksource')+'\\lib', destUri: mjs_dir.uri+'\\lib'}),
- copy_deps = ShellApi.copyDirectory({sourceUri: window.NativeShellApp.GetKnownFolder('frameworksource')+'\\deps\\require', destUri: mjs_dir.uri+'\\deps\\require'}),
- copy_components = ShellApi.copyDirectory({sourceUri: window.NativeShellApp.GetKnownFolder('appsource')+'\\montage-components', destUri: directory.uri+'\\montage-components'});
+ var copy_lib = CoreIoApi.copyDirectory({sourceUri: window.NativeShellApp.GetKnownFolder('frameworksource')+'\\lib', destUri: mjs_dir.uri+'\\lib'}),
+ copy_deps = CoreIoApi.copyDirectory({sourceUri: window.NativeShellApp.GetKnownFolder('frameworksource')+'\\deps\\require', destUri: mjs_dir.uri+'\\deps\\require'}),
+ copy_components = CoreIoApi.copyDirectory({sourceUri: window.NativeShellApp.GetKnownFolder('appsource')+'\\montage-components', destUri: directory.uri+'\\montage-components'});
//Checking for lib operation's result
if (copy_lib.success) {
@@ -496,11 +488,11 @@ switch (type.toLowerCase()) {
var prj_tmplt = window.NativeShellApp.GetKnownFolder('appsource')+'\\document-templates\\projects\\montage';
//TODO: Add error handling for file copying, clean up this HACK
- var copy_packagemjs = ShellApi.copyFile({sourceUri: window.NativeShellApp.GetKnownFolder('frameworksource')+'\\package.json', destUri: mjs_dir.uri+'\\package.json'}),
- copy_styles = ShellApi.copyFile({sourceUri: prj_tmplt+'\\styles.css', destUri: directory.uri+'\\styles.css'}),
- copy_appdelegate = ShellApi.copyFile({sourceUri: prj_tmplt+'\\appdelegate.js', destUri: directory.uri+'\\appdelegate.js'}),
- copy_package = ShellApi.copyFile({sourceUri: prj_tmplt+'\\package.json', destUri: directory.uri+'\\package.json'}),
- copy_index = ShellApi.copyFile({sourceUri: prj_tmplt+'\\index.html', destUri: directory.uri+'\\index.html'});
+ var copy_packagemjs = CoreIoApi.copyFile({sourceUri: window.NativeShellApp.GetKnownFolder('frameworksource')+'\\package.json', destUri: mjs_dir.uri+'\\package.json'}),
+ copy_styles = CoreIoApi.copyFile({sourceUri: prj_tmplt+'\\styles.css', destUri: directory.uri+'\\styles.css'}),
+ copy_appdelegate = CoreIoApi.copyFile({sourceUri: prj_tmplt+'\\appdelegate.js', destUri: directory.uri+'\\appdelegate.js'}),
+ copy_package = CoreIoApi.copyFile({sourceUri: prj_tmplt+'\\package.json', destUri: directory.uri+'\\package.json'}),
+ copy_index = CoreIoApi.copyFile({sourceUri: prj_tmplt+'\\index.html', destUri: directory.uri+'\\index.html'});
//
this.openProject(directory);
@@ -567,7 +559,7 @@ switch (type.toLowerCase()) {
//TODO: Add cloud integration
} else {
//Getting file URI from native prompt
- uri = ShellApi.openShellDialog({type: 'directory', action: 'open'});
+ uri = CoreIoApi.openShellDialog({type: 'directory', action: 'open'});
}
}
//Checking for a valid URI
@@ -608,7 +600,7 @@ switch (type.toLowerCase()) {
////////////////////////////////////////////////////////////////////
if (f) {
- var s = ShellApi.updateFile(f);
+ var s = CoreIoApi.updateFile(f);
} else {
//HACK
this.saveProject();
diff --git a/js/io/system/projectio.js b/js/io/system/projectio.js
old mode 100644
new mode 100755
diff --git a/js/io/system/shellapi.js b/js/io/system/shellapi.js
deleted file mode 100644
index 9976dbed..00000000
--- a/js/io/system/shellapi.js
+++ /dev/null
@@ -1,806 +0,0 @@
-/*
-This file contains proprietary software owned by Motorola Mobility, Inc.
-No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
-(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
- */
-
-/* /////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-NOTES: All logic should be handled in the FileSystem and I/O classes
-
-Dialog methods on NativeShellApp
-ShowFileOpenDialog(initialDir) - shows a file open dialog
-initialDir is optional and if specified will cause the dialog to initially display that directory as the open location
-ShowFileSaveAsDialog(initialURI) - shows a file Save As dialog
-initialURI is optional and if specified will cause the dialog to initially display the directory as the default location
-and the filename as the current filename.
-ShowSelectDirectoryDialog(initialDir, dialogTitle) - displays a directory select/chooser dialog
-intitalDir is optional and specifies the directory that should be selected/shown when the dialog opens
-dialogTitle is optional and specifies the title that should appear in the dialog caption
-////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////// */
-//Exporting as Project I/O
-exports.ShellApi = (require("montage/core/core").Montage).create(require("montage/ui/component").Component, {
- ////////////////////////////////////////////////////////////////////
- //
- init: {
- enumerable: false,
- value: function() {
- try {
- var xhr = new XMLHttpRequest(), file, directory;
- //
- xhr.open("GET", 'cloud/config.xml', false);
- xhr.send();
- //
- if (xhr.readyState === 4) {
- file = xhr.responseXML.getElementsByTagName('file')[0].firstChild.nodeValue;
- directory = xhr.responseXML.getElementsByTagName('directory')[0].firstChild.nodeValue;
- if (file.length)
- this._fileServiceURL = file;
- if (directory.length)
- this._directoryServiceURL = directory;
- //
- //console.log(file, directory);
- }
- }
- catch(error) {
- console.log(error);
- }
- }
- },
- ////////////////////////////////////////////////////////////////////
- //
- openShellDialog: {
- enumerable: false,
- value: function(dialog) {
- //Initializing return variable
- var input = null;
- //Checking for the type of prompt set via object
- switch (dialog.type) {
- case 'file':
- //Checking for action the prompt will ask the user
- if (dialog.action.toLowerCase() == 'open') {
- //File open dialog
- input = window.NativeShellApp.ShowFileOpenDialog();
- } else if (dialog.action.toLowerCase() == 'new') {
- //File new dialog
- input = window.NativeShellApp.ShowFileSaveAsDialog();
- }
- break;
- case 'directory':
- //Checking for action the prompt will ask the user
- if (dialog.action.toLowerCase() == 'open') {
- //Directory open dialog
- input = window.NativeShellApp.ShowSelectDirectoryDialog();
- } else if (dialog.action.toLowerCase() == 'new') {
- //Directory new dialog
- input = window.NativeShellApp.ShowSelectDirectoryDialog();
- }
- break;
- break;
- default:
- break;
- }
- return input;
- }
- },
- ////////////////////////////////////////////////////////////////////
- //
- startServer: {
- enumerable: false,
- value: function (dir) {
- var server = window.NativeShellApp.StartWebServer(dir);
- return server;
- }
- },
- ////////////////////////////////////////////////////////////////////
- // private property containing the file service URL to use for all file IO calls
- _fileServiceURL: {
- enumerable: false,
- value: "http://localhost:16380/file" //default value.. updated with base uri in config.xml
- },
- ////////////////////////////////////////////////////////////////////
- // private property containing the directory service URL to use for all file IO calls
- _directoryServiceURL: {
- enumerable: false,
- value: "http://localhost:16380/directory" //default value.. updated with base uri in config.xml
- },
- ////////////////////////////////////////////////////////////////////
- // private helper to parse URIs and append them to the service URL
- _prepareServiceURL: {
- enumerable: false,
- value: function(serviceURL, path) {
- var urlOut = path.replace(/\\/g,"/");
- urlOut = urlOut.replace(/:/g,"");
- urlOut = encodeURI(urlOut);
- //add leading / if not already there
- if((urlOut.length > 0) && (urlOut.charAt(0) !== "/")){
- urlOut = "/" + urlOut;
- }
- return serviceURL + urlOut;
- }
- },
- ////////////////////////////////////////////////////////////////////
- // Checks for the existence of a file
- // Parameters:
- // the file parameter must contain the following properties
- // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
- //
- // Return values:
- // returns an object with two properties
- // success: boolean indicating if the call succeeded or failed
- // status: int indicating the request HTTP status code
- // 204 - the file exists
- // 404 - the file does not exist
- // 500 - unknown server error occurred
- fileExists: {
- enumerable: false,
- value: function(file) {
- //
- var retValue = { success:null, status:null };
- //
- if(file && file.uri && file.uri.length) {
- try {
- var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
- xhr = new XMLHttpRequest();
- //
- xhr.open("GET", serviceURL, false);
- xhr.setRequestHeader("check-existence-only", "true");
- xhr.send();
- //
- if (xhr.readyState === 4) {
- retValue.status = xhr.status;
- retValue.success = true;
- }
- }
- catch(error) {
- xhr = null;
- retValue.success = false;
- }
- }
- //
- return retValue;
- }
- },
- ////////////////////////////////////////////////////////////////////
- // Creates a new file at the specified path
- // Parameters:
- // the file parameter must contain the following properties
- // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
- // it can optionally contain the following properties
- // contentType: string with the content type i.e. "text/plain". "text/plain" is assumed if this property is not specified
- // contents: string containing the file contents. These contents will be saved to the new file.
- //
- // Return values:
- // returns an object with two properties
- // success: boolean indicating if the call succeeded or failed
- // status: int indicating the request HTTP status code
- // 201 - the file was created and contents were saved if they were passed
- // 400 - the file already exists and could not be created
- // 500 - unknown server error occurred
- createFile: {
- enumerable: false,
- value: function(file) {
- var retValue = { success:null, status:null };
- if(file && file.uri && file.uri.length) {
- try {
- var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
- xhr = new XMLHttpRequest();
- //
- xhr.open("POST", serviceURL, false);
- if(file.contentType && file.contentType.length)
- xhr.setRequestHeader("Content-Type", file.contentType);
- else
- xhr.setRequestHeader("Content-Type", "text/plain");
-
- if(file.contents && file.contents.length)
- xhr.send(file.contents);
- else
- xhr.send();
-
- if (xhr.readyState === 4) {
- retValue.status = xhr.status;
- retValue.success = true;
- }
- }
- catch(error) {
- xhr = null;
- retValue.success = false;
- }
- }
-
- return retValue;
- }
- },
- ////////////////////////////////////////////////////////////////////
- // Save contents into an existing file at the specified path
- // Parameters:
- // the file parameter must contain the following properties
- // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
- // it can optionally contain the following properties
- // contentType: string with the content type i.e. "text/plain". "text/plain" is assumed if this property is not specified
- // contents: string containing the file contents. These contents will be saved to the new file.
- //
- // Return values:
- // returns an object with two properties
- // success: boolean indicating if the call succeeded or failed
- // status: int indicating the request HTTP status code
- // 204 - the file was saved
- // 404 - the file specified does not exist
- // 500 - unknown server error occurred
- updateFile: {
- enumerable: false,
- value: function(file) {
- var retValue = { success:null, status:null };
- if(file && file.uri && file.uri.length && file.contents && file.contents.length) {
- try {
- var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.uri),
- xhr = new XMLHttpRequest();
- //
- xhr.open("PUT", serviceURL, false);
- if(file.contentType && file.contentType.length)
- xhr.setRequestHeader("Content-Type", file.contentType);
- else
- xhr.setRequestHeader("Content-Type", "text/plain");
-
- xhr.send(file.contents);
-
- if (xhr.readyState === 4) {
- retValue.status = xhr.status;
- retValue.success = true;
- }
- }
- catch(error) {
- xhr = null;
- retValue.success = false;
- }
- }
-
- return retValue;
- }
- },
- ////////////////////////////////////////////////////////////////////
- // Copies a file from one location to another
- // Parameters:
- // the file parameter must contain the following properties
- // sourceUri: string value containing the full file path/URI to copy from i.e. "c:/foo/bar.html"
- // destUri: string containing the full path/URI to copy to
- // it can optionally contain the following properties
- // overwriteDestination: bool indicating whether it is okay to overwrite the file specified at destUri if it already exists
- //
- // Return values:
- // returns an object with two properties
- // success: boolean indicating if the call succeeded or failed
- // status: int indicating the request HTTP status code
- // 204 - the file was copied
- // 404 - the file specified in sourceUri does not exist
- // 500 - unknown server error occurred
- copyFile: {
- enumerable: false,
- value: function(file) {
- var retValue = { success:null, status:null };
- if(file && file.sourceUri && file.sourceUri.length && file.destUri && file.destUri.length) {
- try {
- var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.destUri),
- xhr = new XMLHttpRequest();
- //
- xhr.open("PUT", serviceURL, false);
- xhr.setRequestHeader("sourceURI", file.sourceUri);
- //
- if(file.overwriteDestination && file.overwriteDestination === true) {
- xhr.setRequestHeader("overwrite-destination", "true");
- }
- //
- xhr.send();
- //
- if (xhr.readyState === 4) {
- retValue.status = xhr.status;
- retValue.success = true;
- }
- }
- catch(error) {
- xhr = null;
- retValue.success = false;
- }
- }
- //
- return retValue;
- }
- },
- ////////////////////////////////////////////////////////////////////
- // Moves a file from one location to another
- // Parameters:
- // the file parameter must contain the following properties
- // sourceUri: string value containing the full file path/URI to copy from i.e. "c:/foo/bar.html"
- // destUri: string containing the full path/URI to copy to
- // it can optionally contain the following properties
- // overwriteDestination: bool indicating whether it is okay to overwrite the file specified at destUri if it already exists
- //
- // Return values:
- // returns an object with two properties
- // success: boolean indicating if the call succeeded or failed
- // status: int indicating the request HTTP status code
- // 204 - the file was moved
- // 404 - the file specified in sourceUri does not exist
- // 500 - unknown server error occurred
- moveFile: {
- enumerable: false,
- value: function(file) {
- var retValue = { success:null, status:null };
- if(file && file.sourceUri && file.sourceUri.length && file.destUri && file.destUri.length) {
- try {
- var serviceURL = this._prepareServiceURL(this._fileServiceURL, file.destUri),
- xhr = new XMLHttpRequest();
- //
- xhr.open("PUT", serviceURL, false);
- xhr.setRequestHeader("sourceURI", file.sourceUri);
- xhr.setRequestHeader("delete-source", "true");
- //
- if(file.overwriteDestination && file.overwriteDestination === true) {
- xhr.setRequestHeader("overwrite-destination", "true");
- }
- //
- xhr.send();
- //
- if (xhr.readyState === 4) {
- retValue.status = xhr.status;
- retValue.success = true;
- }
- }
- catch(error) {
- xhr = null;
- retValue.success = false;
- }
- }
- //
- return retValue;
- }
- },
- ////////////////////////////////////////////////////////////////////
- // Deletes an existing file
- // Parameters:
- // the file parameter must contain the following properties
- // uri: string value containing the full file path/URI i.e. "c:/foo/bar.html"
- //
- // Return values:
- // returns an object with two properties
- // success: boolean indicating if the call succeeded or failed
- // status: int indicating the request HTTP status code
- // 204 - the file was deleted
- // 404 -