home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / protocol / ftp.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  5KB  |  170 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        ftp.h
  3. // Purpose:     FTP protocol
  4. // Author:      Vadim Zeitlin
  5. // Modified by: Mark Johnson, wxWindows@mj10777.de 
  6. //              20000917 : RmDir, GetLastResult, GetList 
  7. // Created:     07/07/1997
  8. // RCS-ID:      $Id: ftp.h,v 1.10 2002/08/31 11:29:13 GD Exp $
  9. // Copyright:   (c) 1997, 1998 Guilhem Lavaux
  10. // Licence:     wxWindows license
  11. /////////////////////////////////////////////////////////////////////////////
  12.  
  13. #ifndef __WX_FTP_H__
  14. #define __WX_FTP_H__
  15.  
  16. #if defined(__GNUG__) && !defined(__APPLE__)
  17.     #pragma interface "ftp.h"
  18. #endif
  19.  
  20. #include "wx/defs.h"
  21.  
  22. #if wxUSE_PROTOCOL_FTP
  23.  
  24. #include "wx/sckaddr.h"
  25. #include "wx/protocol/protocol.h"
  26. #include "wx/url.h"
  27.  
  28. class WXDLLEXPORT wxFTP : public wxProtocol
  29. {
  30. public:
  31.     enum TransferMode
  32.     {
  33.         NONE,       // not set by user explicitly
  34.         ASCII,
  35.         BINARY
  36.     };
  37.  
  38.     wxFTP();
  39.     virtual ~wxFTP();
  40.  
  41.     // Connecting and disconnecting
  42.     void SetUser(const wxString& user) { m_user = user; }
  43.     void SetPassword(const wxString& passwd) { m_passwd = passwd; }
  44.  
  45.     bool Connect(wxSockAddress& addr, bool wait = TRUE);
  46.     bool Connect(const wxString& host);
  47.  
  48.     // disconnect
  49.     virtual bool Close();
  50.  
  51.     // Parameters set up
  52.  
  53.     // set transfer mode now
  54.     bool SetBinary() { return SetTransferMode(BINARY); }
  55.     bool SetAscii() { return SetTransferMode(ASCII); }
  56.     bool SetTransferMode(TransferMode mode);
  57.  
  58.     // Generic FTP interface
  59.  
  60.     // the error code
  61.     virtual wxProtocolError GetError() { return m_lastError; }
  62.  
  63.     // the last FTP server reply
  64.     const wxString& GetLastResult() { return m_lastResult; }
  65.  
  66.     // send any FTP command (should be full FTP command line but without
  67.     // trailing "\r\n") and return its return code
  68.     char SendCommand(const wxString& command);
  69.  
  70.     // check that the command returned the given code
  71.     bool CheckCommand(const wxString& command, char expectedReturn)
  72.     {
  73.         return SendCommand(command) == expectedReturn;
  74.     }
  75.  
  76.     // Filesystem commands
  77.     bool ChDir(const wxString& dir);
  78.     bool MkDir(const wxString& dir);
  79.     bool RmDir(const wxString& dir);
  80.     wxString Pwd();
  81.     bool Rename(const wxString& src, const wxString& dst);
  82.     bool RmFile(const wxString& path);
  83.  
  84.     // Get the size of a file in the current dir.
  85.     // this function tries its best to deliver the size in bytes using BINARY
  86.     // (the SIZE command reports different sizes depending on whether 
  87.     // type is set to ASCII or BINARY)
  88.     // returns -1 if file is non-existant or size could not be found
  89.     int GetFileSize(const wxString& fileName);
  90.  
  91.        // Check to see if a file exists in the current dir
  92.     bool FileExists(const wxString& fileName);
  93.  
  94.     // Download methods
  95.     bool Abort();
  96.  
  97.     virtual wxInputStream *GetInputStream(const wxString& path);
  98.     virtual wxOutputStream *GetOutputStream(const wxString& path);
  99.  
  100.     // Directory listing
  101.  
  102.     // get the list of full filenames, the format is fixed: one file name per
  103.     // line
  104.     bool GetFilesList(wxArrayString& files,
  105.                       const wxString& wildcard = wxEmptyString)
  106.     {
  107.         return GetList(files, wildcard, FALSE);
  108.     }
  109.  
  110.     // get a directory list in server dependent format - this can be shown
  111.     // directly to the user
  112.     bool GetDirList(wxArrayString& files,
  113.                     const wxString& wildcard = wxEmptyString)
  114.     {
  115.         return GetList(files, wildcard, TRUE);
  116.     }
  117.  
  118.     // equivalent to either GetFilesList() (default) or GetDirList()
  119.     bool GetList(wxArrayString& files,
  120.                  const wxString& wildcard = wxEmptyString,
  121.                  bool details = FALSE);
  122.  
  123. #if WXWIN_COMPATIBILITY_2
  124.     // deprecated
  125.     wxList *GetList(const wxString& wildcard, bool details = FALSE);
  126. #endif // WXWIN_COMPATIBILITY_2
  127.  
  128. protected:
  129.     // this executes a simple ftp command with the given argument and returns
  130.     // TRUE if it its return code starts with '2'
  131.     bool DoSimpleCommand(const wxChar *command,
  132.                          const wxString& arg = wxEmptyString);
  133.  
  134.     // get the server reply, return the first character of the reply code,
  135.     // '1'..'5' for normal FTP replies, 0 (*not* '0') if an error occured
  136.     char GetResult();
  137.  
  138.     // check that the result is equal to expected value
  139.     bool CheckResult(char ch) { return GetResult() == ch; }
  140.  
  141.     wxSocketClient *GetPort();
  142.  
  143.     wxString m_user,
  144.              m_passwd;
  145.  
  146.     wxString m_lastResult;
  147.     wxProtocolError m_lastError;
  148.  
  149.     // true if there is an FTP transfer going on
  150.     bool m_streaming;
  151.  
  152.     // although this should be set to ASCII by default according to STD9,
  153.     // we will use BINARY transfer mode by default for backwards compatibility
  154.     TransferMode m_currentTransfermode;
  155.  
  156.     friend class wxInputFTPStream;
  157.     friend class wxOutputFTPStream;
  158.  
  159.     DECLARE_DYNAMIC_CLASS(wxFTP)
  160.     DECLARE_PROTOCOL(wxFTP)
  161. };
  162.  
  163. // the trace mask used by assorted wxLogTrace() in ftp code, do
  164. // wxLog::AddTraceMask(FTP_TRACE_MASK) to see them in output
  165. #define FTP_TRACE_MASK _T("ftp")
  166.  
  167. #endif // wxUSE_PROTOCOL_FTP
  168.  
  169. #endif // __WX_FTP_H__
  170.