diff --git a/helma/Ftp.js b/helma/Ftp.js index e20f3847..65b9f705 100644 --- a/helma/Ftp.js +++ b/helma/Ftp.js @@ -6,19 +6,40 @@ * compliance with the License. A copy of the License is available at * http://adele.helma.org/download/helma/license.txt * - * Copyright 1998-2006 Helma Software. All Rights Reserved. + * Copyright 1998-2007 Helma Software. All Rights Reserved. * * $RCSfile: Ftp.js,v $ - * $Author: czv $ - * $Revision: 1.2 $ - * $Date: 2006/04/24 07:02:17 $ + * $Author: hannes $ + * $Revision: 1.3 $ + * $Date: 2006/07/25 13:01:02 $ */ +/** + * @fileoverview Default properties and methods of + * the FtpClient prototype. + */ + + +/** + * Define the global namespace if not existing + */ if (!global.helma) { global.helma = {}; } +/** + * Constructor for FTP client objects, to send and receive files from an FTP server. + *

+ * @class This class represents a FTP client, providing + * access to an FTP server. + * The FTP client needs Daniel Savarese's NetComponents + * library in the classpath in order to work. + * + * @example var ftp = new FtpClient("ftp.mydomain.com"); + * @param {String} server as String, the address of the FTP Server to connect to + * @constructor + */ helma.Ftp = function(server) { var OK = 0; var SOCKET = 1; @@ -80,11 +101,15 @@ helma.Ftp = function(server) { this.server = server; this.status = OK; - + + /** @ignore */ this.toString = function() { return "[helma.Ftp " + server + "]"; }; + /** + * Set the default timeout in milliseconds to use when opening a socket. + */ this.setReadTimeout = function(timeout) { try { ftpclient.setDefaultTimeout(timeout); @@ -97,6 +122,9 @@ helma.Ftp = function(server) { return false; }; + /** + * Sets the timeout in milliseconds to use when reading from the data connection. + */ this.setTimeout = function(timeout) { try { ftpclient.setDataTimeout(timeout); @@ -109,6 +137,14 @@ helma.Ftp = function(server) { return false; }; + /** + * Logs in to the FTP server. + * + * @param {String} username as String + * @param {String} password as String + * @return Boolean true if the login was successful, otherwise false + * @type Boolean + */ this.login = function(username, password) { try { ftpclient.connect(this.server); @@ -122,6 +158,11 @@ helma.Ftp = function(server) { return false; }; + /** + * Sets transfer mode to binary for transmitting images and other non-text files. + * + * @example ftp.binary(); + */ this.binary = function() { try { var result = ftpclient.setFileType(FTP.BINARY_FILE_TYPE); @@ -134,6 +175,11 @@ helma.Ftp = function(server) { return false; }; + /** + * Sets transfer mode to ascii for transmitting text-based data. + * + * @example ftp.ascii(); + */ this.ascii = function() { try { var result = ftpclient.setFileType(FTP.ASCII_FILE_TYPE); @@ -146,6 +192,11 @@ helma.Ftp = function(server) { return false; }; + /** + * Switches the connection to use active mode. + * + * @example ftp.active(); + */ this.active = function() { try { ftpclient.enterLocalActiveMode(); @@ -158,6 +209,11 @@ helma.Ftp = function(server) { return false; }; + /** + * Switches the connection to use passive mode. + * + * @example ftp.passive(); + */ this.passive = function() { try { ftpclient.enterLocalPassiveMode(); @@ -170,6 +226,13 @@ helma.Ftp = function(server) { return false; }; + /** + * Returns the path of the current working directory. + * + * @example var remotepath = ftp.pwd(); + * @type String + * @return String containing the current working directory path + */ this.pwd = function() { try { debug("pwd"); @@ -181,6 +244,18 @@ helma.Ftp = function(server) { return; }; + /** + * Returns a listing of the files contained in a directory on the FTP server. + *

+ * Lists the files contained in the current working + * directory or, if an alternative path is specified, the + * files contained in the specified directory. + * + * @example var filelist = ftp.dir(); + * @param {String} path as String, optional alternative directory + * @return Array containing the list of files in that directory + * @type Array + */ this.dir = function(path) { try { debug("dir", path); @@ -192,6 +267,18 @@ helma.Ftp = function(server) { return; }; + /** + * Creates a new directory on the server. + *

+ * The name of the directory is determined as the function's + * string parameter. Returns false when an error occured + * (e.g. due to access restrictions, directory already + * exists etc.), otherwise true. + * + * @param {String} dir as String, the name of the directory to be created + * @return Boolean true if the directory was successfully created, false if there was an error + * @type Boolean + */ this.mkdir = function(dir) { try { var result = ftpclient.makeDirectory(dir); @@ -204,6 +291,13 @@ helma.Ftp = function(server) { return false; }; + /** + * Deletes a directory on the FTP server. + * + * @param {String} dir as String, the name of the directory to be deleted + * @return Boolean true if the deletion was successful, false otherwise + * @type Boolean + */ this.rmdir = function(dir) { try { var result = ftpclient.removeDirectory(dir); @@ -216,6 +310,14 @@ helma.Ftp = function(server) { return false; }; + /** + * Changes the working directory on the FTP server. + * + * @example ftp.cd("/home/users/fred/www"); // use absolute pathname + * @example ftp.cd(".."); // change to parent directory + * @example ftp.cd("images"); // use relative pathname + * @param {String} dir as String, the path that the remote working directory should be changed to + */ this.cd = function(path) { try { var result = ftpclient.changeWorkingDirectory(path); @@ -228,6 +330,14 @@ helma.Ftp = function(server) { return false; }; + /** + * Changes the working directory of the local machine when being connected to an FTP server. + * + * @example ftp.lcd("/home/users/fred/www"); // use absolute pathname + * @example ftp.lcd(".."); // change to parent directory + * @example ftp.lcd("images"); // use relative pathname + * @param {String} dir as String, the path that the local working directory should be changed to + */ this.lcd = function(dir) { try { localDir = new File(dir); @@ -243,6 +353,16 @@ helma.Ftp = function(server) { return false; }; + /** + * Transfers a file from the local file system to the remote server. + *

+ * Returns true if the transmission was successful, otherwise false. + * + * @param {String} localFile as String, the name of the file to be uploaded + * @param {String} remoteFile as String, the name of the remote destination file + * @return Boolean true if the file was successfully uploaded, false if there was an error + * @type Boolean + */ this.putFile = function(localFile, remoteFile) { try { if (localFile instanceof File) { @@ -270,6 +390,16 @@ helma.Ftp = function(server) { return false; }; + /** + * Transfers text from a string to a file on the FTP server. + * + * @example ftp.putString("Hello, World!", "message.txt"); + * @param {String} str as String, the text content that should be uploaded + * @param {String} remoteFile as String, the name of the remote destination file + * @param {String} charset as String, optional + * @return Boolean true if the file was successfully uploaded, false if there was an error + * @type Boolean + */ this.putString = function(str, remoteFile, charset) { try { str = new java.lang.String(str); @@ -285,6 +415,15 @@ helma.Ftp = function(server) { return false; }; + /** + * Transfers a file from the FTP server to the local file system. + * + * @example ftp.getFile(".htaccess", "htaccess.txt"); + * @param {String} remoteFile as String, the name of the file that should be downloaded + * @param {String} localFile as String, the name which the file should be stored under + * @see #cd + * @see #lcd + */ this.getFile = function(remoteFile, localFile) { try { if (localDir == null) @@ -305,6 +444,15 @@ helma.Ftp = function(server) { return false; }; + /** + * Retrieves a file from the FTP server and returns it as string. + * + * @example var str = ftp.getString("messages.txt"); + * @param {String} remoteFile as String, the name of the file that should be downloaded + * @return String containing the data of the downloaded file + * @type String + * @see #cd + */ this.getString = function(remoteFile) { try { var stream = ByteArrayOutputStream(); @@ -318,6 +466,14 @@ helma.Ftp = function(server) { return; }; + /** + * Deletes a file on the FTP server. + * + * @example var str = ftp.delete("messages.txt"); + * @param {String} remoteFile as String, the name of the file to be deleted + * @return Boolean true if the deletion was successful, false otherwise + * @type Boolean + */ this.deleteFile = function(remoteFile) { try { var result = ftpclient.deleteFile(remoteFile); @@ -330,6 +486,9 @@ helma.Ftp = function(server) { return false; }; + /** + * Terminates the current FTP session. + */ this.logout = function() { try { var result = ftpclient.logout(); @@ -350,6 +509,7 @@ helma.Ftp = function(server) { } +/** @ignore */ helma.Ftp.toString = function() { return "[helma.Ftp]"; };