Ftp.h
Go to the documentation of this file.
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_FTP_H
26 #define SFML_FTP_H
27 
29 // Headers
31 #include <SFML/Network/Export.h>
32 #include <SFML/Network/IpAddress.h>
33 #include <SFML/Network/Types.h>
34 #include <stddef.h>
35 
36 
41 typedef enum
42 {
47 
48 
53 typedef enum
54 {
55  // 1xx: the requested action is being initiated,
56  // expect another reply before proceeding with a new command
61 
62  // 2xx: the requested action has been successfully completed
63  sfFtpOk = 200,
75  sfFtpLoggedIn = 230,
78 
79  // 3xx: the command has been accepted, but the requested action
80  // is dormant, pending receipt of further information
84 
85  // 4xx: the command was not accepted and the requested action did not take place,
86  // but the error condition is temporary and the action may be requested again
93 
94  // 5xx: the command was not accepted and
95  // the requested action did not take place
107 
108  // 10xx: SFML custom codes
113 } sfFtpStatus;
114 
115 
123 
136 
146 
155 CSFML_NETWORK_API const char* sfFtpListingResponse_getMessage(const sfFtpListingResponse* ftpListingResponse);
156 
166 
176 CSFML_NETWORK_API const char* sfFtpListingResponse_getName(const sfFtpListingResponse* ftpListingResponse, size_t index);
177 
185 
198 
208 
217 CSFML_NETWORK_API const char* sfFtpDirectoryResponse_getMessage(const sfFtpDirectoryResponse* ftpDirectoryResponse);
218 
227 CSFML_NETWORK_API const char* sfFtpDirectoryResponse_getDirectory(const sfFtpDirectoryResponse* ftpDirectoryResponse);
228 
229 
237 
250 
260 
269 CSFML_NETWORK_API const char* sfFtpResponse_getMessage(const sfFtpResponse* ftpResponse);
270 
278 
286 
307 CSFML_NETWORK_API sfFtpResponse* sfFtp_connect(sfFtp* ftp, sfIpAddress server, unsigned short port, sfTime timeout);
308 
321 
335 CSFML_NETWORK_API sfFtpResponse* sfFtp_login(sfFtp* ftp, const char* name, const char* password);
336 
346 
359 
372 
388 
400 CSFML_NETWORK_API sfFtpResponse* sfFtp_changeDirectory(sfFtp* ftp, const char* directory);
401 
411 
425 
441 
455 CSFML_NETWORK_API sfFtpResponse* sfFtp_renameFile(sfFtp* ftp, const char* file, const char* newName);
456 
471 CSFML_NETWORK_API sfFtpResponse* sfFtp_deleteFile(sfFtp* ftp, const char* name);
472 
489 CSFML_NETWORK_API sfFtpResponse* sfFtp_download(sfFtp* ftp, const char* remoteFile, const char* localPath, sfFtpTransferMode mode);
490 
507 CSFML_NETWORK_API sfFtpResponse* sfFtp_upload(sfFtp* ftp, const char* localFile, const char* remotePath, sfFtpTransferMode mode);
508 
527 CSFML_NETWORK_API sfFtpResponse* sfFtp_sendCommand(sfFtp* ftp, const char* command, const char* parameter);
528 
529 
530 #endif // SFML_FTP_H
Command ok.
Definition: Ftp.h:63
CSFML_NETWORK_API sfFtpResponse * sfFtp_renameFile(sfFtp *ftp, const char *file, const char *newName)
Rename an existing file.
CSFML_NETWORK_API sfFtpResponse * sfFtp_connect(sfFtp *ftp, sfIpAddress server, unsigned short port, sfTime timeout)
Connect to the specified FTP server.
CSFML_NETWORK_API sfFtpResponse * sfFtp_loginAnonymous(sfFtp *ftp)
Log in using an anonymous account.
Text mode using ASCII encoding.
Definition: Ftp.h:44
Need account for storing files.
Definition: Ftp.h:102
Help message.
Definition: Ftp.h:68
#define CSFML_NETWORK_API
CSFML_NETWORK_API sfBool sfFtpDirectoryResponse_isOk(const sfFtpDirectoryResponse *ftpDirectoryResponse)
Check if a FTP directory response status code means a success.
User logged in, proceed. Logged out if appropriate.
Definition: Ftp.h:75
Data connection already opened, transfer starting.
Definition: Ftp.h:59
CSFML_NETWORK_API sfFtpStatus sfFtpListingResponse_getStatus(const sfFtpListingResponse *ftpListingResponse)
Get the status code of a FTP listing response.
struct sfFtp sfFtp
Definition: Network/Types.h:32
Data connection open, no transfer in progress.
Definition: Ftp.h:72
CSFML_NETWORK_API sfBool sfFtpResponse_isOk(const sfFtpResponse *ftpResponse)
Check if a FTP response status code means a success.
Directory status.
Definition: Ftp.h:66
File status.
Definition: Ftp.h:67
NAME system type, where NAME is an official system name from the list in the Assigned Numbers documen...
Definition: Ftp.h:69
sfFtpTransferMode
Enumeration of transfer modes.
Definition: Ftp.h:41
CSFML_NETWORK_API sfFtpResponse * sfFtp_changeDirectory(sfFtp *ftp, const char *directory)
Change the current working directory.
CSFML_NETWORK_API void sfFtpDirectoryResponse_destroy(sfFtpDirectoryResponse *ftpDirectoryResponse)
Destroy a FTP directory response.
CSFML_NETWORK_API sfFtpStatus sfFtpDirectoryResponse_getStatus(const sfFtpDirectoryResponse *ftpDirectoryResponse)
Get the status code of a FTP directory response.
CSFML_NETWORK_API void sfFtpListingResponse_destroy(sfFtpListingResponse *ftpListingResponse)
Destroy a FTP listing response.
Connection with server closed.
Definition: Ftp.h:111
CSFML_NETWORK_API sfFtpResponse * sfFtp_createDirectory(sfFtp *ftp, const char *name)
Create a new directory.
CSFML_NETWORK_API sfFtpResponse * sfFtp_download(sfFtp *ftp, const char *remoteFile, const char *localPath, sfFtpTransferMode mode)
Download a file from a FTP server.
User name ok, need password.
Definition: Ftp.h:81
struct sfFtpResponse sfFtpResponse
Definition: Network/Types.h:31
CSFML_NETWORK_API size_t sfFtpListingResponse_getCount(const sfFtpListingResponse *ftpListingResponse)
Return the number of directory/file names contained in a FTP listing response.
Encapsulate an IPv4 network address.
Definition: IpAddress.h:39
Command not implemented.
Definition: Ftp.h:98
Can&#39;t open data connection.
Definition: Ftp.h:88
CSFML_NETWORK_API sfFtpStatus sfFtpResponse_getStatus(const sfFtpResponse *ftpResponse)
Get the status code of a FTP response.
Requested action aborted, page type unknown.
Definition: Ftp.h:104
CSFML_NETWORK_API sfFtpResponse * sfFtp_keepAlive(sfFtp *ftp)
Send a null command to keep the connection alive.
int sfBool
Definition: Config.h:153
Restart marker reply.
Definition: Ftp.h:57
CSFML_NETWORK_API const char * sfFtpListingResponse_getName(const sfFtpListingResponse *ftpListingResponse, size_t index)
Return a directory/file name contained in a FTP listing response.
Binary mode (file is transfered as a sequence of bytes)
Definition: Ftp.h:43
Text mode using EBCDIC encoding.
Definition: Ftp.h:45
CSFML_NETWORK_API sfBool sfFtpListingResponse_isOk(const sfFtpListingResponse *ftpListingResponse)
Check if a FTP listing response status code means a success.
Requested action aborted, local error in processing.
Definition: Ftp.h:91
Represents a time value.
Definition: Time.h:38
CSFML_NETWORK_API const char * sfFtpResponse_getMessage(const sfFtpResponse *ftpResponse)
Get the full message contained in a FTP response.
Requested action not taken, file name not allowed.
Definition: Ftp.h:106
Connection closed, transfer aborted.
Definition: Ftp.h:89
CSFML_NETWORK_API sfFtpResponse * sfFtp_login(sfFtp *ftp, const char *name, const char *password)
Log in using a username and a password.
Invalid file to upload / download.
Definition: Ftp.h:112
struct sfFtpListingResponse sfFtpListingResponse
Definition: Network/Types.h:30
CSFML_NETWORK_API sfFtpDirectoryResponse * sfFtp_getWorkingDirectory(sfFtp *ftp)
Get the current working directory.
Need account for login.
Definition: Ftp.h:82
Service closing control connection.
Definition: Ftp.h:71
Service ready in N minutes.
Definition: Ftp.h:58
Requested action not taken; insufficient storage space in system, file unavailable.
Definition: Ftp.h:92
Not logged in.
Definition: Ftp.h:101
Service ready for new user.
Definition: Ftp.h:70
Requested file action pending further information.
Definition: Ftp.h:83
struct sfFtpDirectoryResponse sfFtpDirectoryResponse
Definition: Network/Types.h:29
System status, or system help reply.
Definition: Ftp.h:65
Requested action not taken, file unavailable.
Definition: Ftp.h:103
Command not implemented.
Definition: Ftp.h:64
Response is not a valid FTP one.
Definition: Ftp.h:109
sfFtpStatus
Status codes possibly returned by a FTP response.
Definition: Ftp.h:53
CSFML_NETWORK_API sfFtpListingResponse * sfFtp_getDirectoryListing(sfFtp *ftp, const char *directory)
Get the contents of the given directory.
CSFML_NETWORK_API const char * sfFtpDirectoryResponse_getDirectory(const sfFtpDirectoryResponse *ftpDirectoryResponse)
Get the directory returned in a FTP directory response.
Service not available, closing control connection.
Definition: Ftp.h:87
Command not implemented for that parameter.
Definition: Ftp.h:100
Syntax error, command unrecognized.
Definition: Ftp.h:96
CSFML_NETWORK_API sfFtpResponse * sfFtp_sendCommand(sfFtp *ftp, const char *command, const char *parameter)
Send a command to the FTP server.
PATHNAME created.
Definition: Ftp.h:77
CSFML_NETWORK_API sfFtp * sfFtp_create(void)
Create a new Ftp object.
Bad sequence of commands.
Definition: Ftp.h:99
Requested file action ok.
Definition: Ftp.h:76
CSFML_NETWORK_API void sfFtpResponse_destroy(sfFtpResponse *ftpResponse)
Destroy a FTP response.
Entering passive mode.
Definition: Ftp.h:74
CSFML_NETWORK_API sfFtpResponse * sfFtp_deleteFile(sfFtp *ftp, const char *name)
Remove an existing file.
CSFML_NETWORK_API sfFtpResponse * sfFtp_parentDirectory(sfFtp *ftp)
Go to the parent directory of the current one.
Closing data connection, requested file action successful.
Definition: Ftp.h:73
CSFML_NETWORK_API const char * sfFtpListingResponse_getMessage(const sfFtpListingResponse *ftpListingResponse)
Get the full message contained in a FTP listing response.
CSFML_NETWORK_API void sfFtp_destroy(sfFtp *ftp)
Destroy a Ftp object.
CSFML_NETWORK_API sfFtpResponse * sfFtp_deleteDirectory(sfFtp *ftp, const char *name)
Remove an existing directory.
Requested file action aborted, exceeded storage allocation.
Definition: Ftp.h:105
CSFML_NETWORK_API sfFtpResponse * sfFtp_upload(sfFtp *ftp, const char *localFile, const char *remotePath, sfFtpTransferMode mode)
Upload a file to a FTP server.
CSFML_NETWORK_API const char * sfFtpDirectoryResponse_getMessage(const sfFtpDirectoryResponse *ftpDirectoryResponse)
Get the full message contained in a FTP directory response.
Connection with server failed.
Definition: Ftp.h:110
Requested file action not taken.
Definition: Ftp.h:90
CSFML_NETWORK_API sfFtpResponse * sfFtp_disconnect(sfFtp *ftp)
Close the connection with the server.
File status ok, about to open data connection.
Definition: Ftp.h:60
Syntax error in parameters or arguments.
Definition: Ftp.h:97