/* * Copyright (c) 2007-2011 by The Broad Institute of MIT and Harvard. All Rights Reserved. * * This software is licensed under the terms of the GNU Lesser General Public License (LGPL), * Version 2.1 which is available at http://www.opensource.org/licenses/lgpl-2.1.php. * * THE SOFTWARE IS PROVIDED "AS IS." THE BROAD AND MIT MAKE NO REPRESENTATIONS OR * WARRANTES OF ANY KIND CONCERNING THE SOFTWARE, EXPRESS OR IMPLIED, INCLUDING, * WITHOUT LIMITATION, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, WHETHER * OR NOT DISCOVERABLE. IN NO EVENT SHALL THE BROAD OR MIT, OR THEIR RESPECTIVE * TRUSTEES, DIRECTORS, OFFICERS, EMPLOYEES, AND AFFILIATES BE LIABLE FOR ANY DAMAGES * OF ANY KIND, INCLUDING, WITHOUT LIMITATION, INCIDENTAL OR CONSEQUENTIAL DAMAGES, * ECONOMIC DAMAGES OR INJURY TO PROPERTY AND LOST PROFITS, REGARDLESS OF WHETHER * THE BROAD OR MIT SHALL BE ADVISED, SHALL HAVE OTHER REASON TO KNOW, OR IN FACT * SHALL KNOW OF THE POSSIBILITY OF THE FOREGOING. */ package htsjdk.samtools.util.ftp; import java.io.BufferedReader; import java.io.IOException; /** * @author jrobinso * @date Oct 30, 2010 */ public class FTPReply { String reply; int code; public FTPReply(BufferedReader inputStream) throws IOException { String response = null; do { response = inputStream.readLine(); } while (response != null && !(Character.isDigit(response.charAt(0)) && Character.isDigit(response.charAt(1)) && Character.isDigit(response.charAt(2)) && response.charAt(3) == ' ')); if (response == null || response.length() < 3) { code = -1; } else { code = Integer.parseInt(response.substring(0, 3)); reply = response.substring(3).trim(); } } /** * Gets server reply code from the control port after an ftp command has * been executed. It knows the last line of the response because it begins * with a 3 digit number and a space, (a dash instead of a space would be a * continuation). */ public int getCode() throws IOException { return code; } /** * Gets server reply string from the control port after an ftp command has * been executed. This consists only of the last line of the response, * and only the part after the response code. */ public String getReplyString() throws IOException { return reply; } public boolean isSuccess() { return isPositiveCompletion() || isPositiveIntermediate(); } /** * Determine if a reply code is a positive completion response. All * codes beginning with a 2 are positive completion responses. * The FTP server will send a positive completion response on the final * successful completion of a command. * <p/> * * @return True if a reply code is a postive completion response, false * if not. * * */ public boolean isPositiveCompletion() { return (code >= 200 && code < 300); } /** * Determine if a reply code is a positive intermediate response. All * codes beginning with a 3 are positive intermediate responses. * The FTP server will send a positive intermediate response on the * successful completion of one part of a multi-part sequence of * commands. For example, after a successful USER command, a positive * intermediate response will be sent to indicate that the server is * ready for the PASS command. * <p/> * * @return True if a reply code is a postive intermediate response, false * if not. * * */ public boolean isPositiveIntermediate() { return (code >= 300 && code < 400); } }