View Javadoc
1   /*
2    * This file is part of Waarp Project (named also Waarp or GG).
3    *
4    *  Copyright (c) 2019, Waarp SAS, and individual contributors by the @author
5    *  tags. See the COPYRIGHT.txt in the distribution for a full listing of
6    * individual contributors.
7    *
8    *  All Waarp Project is free software: you can redistribute it and/or
9    * modify it under the terms of the GNU General Public License as published by
10   * the Free Software Foundation, either version 3 of the License, or (at your
11   * option) any later version.
12   *
13   * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY
14   * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15   * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License along with
18   * Waarp . If not, see <http://www.gnu.org/licenses/>.
19   */
20  
21  package org.waarp.ftp.client;
22  
23  import java.io.InputStream;
24  import java.io.OutputStream;
25  
26  public interface WaarpFtpClientInterface {
27    String CANNOT_EXECUTE_OPERATION_SITE = "Cannot execute operation Site";
28    String CANNOT_EXECUTE_OPERATION_FEATURE = "Cannot execute operation Feature";
29    String CANNOT_FINALIZE_TRANSFER_OPERATION =
30        "Cannot finalize transfer operation";
31    String CHDIR_IN_ERROR = "CHDIR in error";
32    String MKDIR_IN_ERROR = "MKDIR in error";
33    String DISCONNECTION_IN_ERROR = "Disconnection in error";
34    String LOGIN_IN_ERROR = "Login in error";
35    String CONNECTION_IN_ERROR = "Connection in error";
36    String SET_BINARY_IN_ERROR = "Set BINARY in error";
37    String CANNOT_FINALIZE_STORE_LIKE_OPERATION =
38        "Cannot finalize store like operation";
39    String CANNOT_FINALIZE_RETRIEVE_LIKE_OPERATION =
40        "Cannot finalize retrieve like operation";
41    String FILE_TYPE_IN_ERROR = "FileType in error";
42    String NOOP_ERROR = "NoOp error";
43  
44    /**
45     * @param ipAddress the external IP address to report in EPRT/PORT commands
46     *     in active mode.
47     */
48    void setReportActiveExternalIPAddress(String ipAddress);
49  
50    /**
51     * @param from the first port to used
52     * @param to the last port to used
53     */
54    void setActiveDataTransferPortRange(int from, int to);
55  
56    /**
57     * @return the result associated with the last command if any error
58     */
59    String getResult();
60  
61    /**
62     * Try to connect to the server and goes with the authentication
63     *
64     * @return True if connected and authenticated, else False
65     */
66    boolean connect();
67  
68    /**
69     * QUIT the control connection
70     */
71    void logout();
72  
73    /**
74     * Disconnect the Ftp Client
75     */
76    void disconnect();
77  
78    /**
79     * Create a new directory
80     *
81     * @param newDir
82     *
83     * @return True if created
84     */
85    boolean makeDir(String newDir);
86  
87    /**
88     * Change remote directory
89     *
90     * @param newDir
91     *
92     * @return True if the change is OK
93     */
94    boolean changeDir(String newDir);
95  
96    /**
97     * Change the FileType of Transfer (Binary true, ASCII false)
98     *
99     * @param binaryTransfer
100    *
101    * @return True if the change is OK
102    */
103   boolean changeFileType(boolean binaryTransfer);
104 
105   /**
106    * Change to passive (true) or active (false) mode
107    *
108    * @param passive
109    */
110   void changeMode(boolean passive);
111 
112   /**
113    * Change to ZLIB compression (true) or inactive (false) mode.
114    * Only if supported.
115    *
116    * @param compression
117    */
118   void compressionMode(boolean compression);
119 
120   /**
121    * Store File
122    *
123    * @param local local filepath (full path)
124    * @param remote filename (basename)
125    *
126    * @return True if the file is correctly transferred
127    */
128   boolean store(String local, String remote);
129 
130   /**
131    * Store File
132    *
133    * @param local local InputStream
134    * @param remote filename (basename)
135    *
136    * @return True if the file is correctly transferred
137    */
138   boolean store(InputStream local, String remote);
139 
140   /**
141    * Store File as Append
142    *
143    * @param local local filepath (full path)
144    * @param remote filename (basename)
145    *
146    * @return True if the file is correctly transferred
147    */
148   boolean append(String local, String remote);
149 
150   /**
151    * Store File as Append
152    *
153    * @param local local InputStream
154    * @param remote filename (basename)
155    *
156    * @return True if the file is correctly transferred
157    */
158   boolean append(InputStream local, String remote);
159 
160   /**
161    * Retrieve File
162    *
163    * @param local local filepath (full path)
164    * @param remote filename (basename)
165    *
166    * @return True if the file is correctly transferred
167    */
168   boolean retrieve(String local, String remote);
169 
170   /**
171    * Retrieve File
172    *
173    * @param local local OutputStream
174    * @param remote filename (basename)
175    *
176    * @return True if the file is correctly transferred
177    */
178   boolean retrieve(OutputStream local, String remote);
179 
180   /**
181    * Ask to transfer a file
182    *
183    * @param local local filepath (full path)
184    * @param remote filename (basename)
185    * @param getStoreOrAppend -1 = get, 1 = store, 2 = append
186    *
187    * @return True if the file is correctly transferred
188    */
189   boolean transferFile(String local, String remote, int getStoreOrAppend);
190 
191   /**
192    * Ask to transfer a file as STORE or APPEND
193    *
194    * @param local local outputStream
195    * @param remote filename (basename)
196    * @param getStoreOrAppend 1 = store, 2 = append
197    *
198    * @return True if the file is correctly transferred
199    */
200   boolean transferFile(InputStream local, String remote, int getStoreOrAppend);
201 
202   /**
203    * Ask to transfer a file as GET
204    *
205    * @param local local outputStream (or NullStream)
206    * @param remote filename (basename)
207    *
208    * @return True if the file is correctly transferred
209    */
210   boolean transferFile(OutputStream local, String remote);
211 
212   /**
213    * @param remote remote file spec
214    *
215    * @return the list of Files as given by FTP
216    */
217   String[] listFiles(String remote);
218 
219   /**
220    * @return the list of Files as given by FTP
221    */
222   String[] listFiles();
223 
224   /**
225    * @param remote remote file spec
226    *
227    * @return the list of Files as given by FTP in MLSD format
228    */
229   String[] mlistFiles(String remote);
230 
231   /**
232    * @return the list of Files as given by FTP in MLSD format
233    */
234   String[] mlistFiles();
235 
236   /**
237    * @return the list of Features as String
238    */
239   String[] features();
240 
241   /**
242    * @param feature
243    *
244    * @return True if the given feature is listed
245    */
246   boolean featureEnabled(String feature);
247 
248   /**
249    * @param remote
250    *
251    * @return True if deleted
252    */
253   boolean deleteFile(String remote);
254 
255   /**
256    * @param params
257    *
258    * @return the string lines result for the command params
259    */
260   String[] executeCommand(String params);
261 
262   /**
263    * @param params command without SITE in front
264    *
265    * @return the string lines result for the SITE command params
266    */
267   String[] executeSiteCommand(String params);
268 
269   /**
270    * Sends a No Op command
271    */
272   void noop();
273 }