Ftp.h
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 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 {
43  sfFtpBinary,
44  sfFtpAscii,
45  sfFtpEbcdic
46 } sfFtpTransferMode;
47 
48 
53 typedef enum
54 {
55  // 1xx: the requested action is being initiated,
56  // expect another reply before proceeding with a new command
57  sfFtpRestartMarkerReply = 110,
58  sfFtpServiceReadySoon = 120,
59  sfFtpDataConnectionAlreadyOpened = 125,
60  sfFtpOpeningDataConnection = 150,
61 
62  // 2xx: the requested action has been successfully completed
63  sfFtpOk = 200,
64  sfFtpPointlessCommand = 202,
65  sfFtpSystemStatus = 211,
66  sfFtpDirectoryStatus = 212,
67  sfFtpFileStatus = 213,
68  sfFtpHelpMessage = 214,
69  sfFtpSystemType = 215,
70  sfFtpServiceReady = 220,
71  sfFtpClosingConnection = 221,
72  sfFtpDataConnectionOpened = 225,
73  sfFtpClosingDataConnection = 226,
74  sfFtpEnteringPassiveMode = 227,
75  sfFtpLoggedIn = 230,
76  sfFtpFileActionOk = 250,
77  sfFtpDirectoryOk = 257,
78 
79  // 3xx: the command has been accepted, but the requested action
80  // is dormant, pending receipt of further information
81  sfFtpNeedPassword = 331,
82  sfFtpNeedAccountToLogIn = 332,
83  sfFtpNeedInformation = 350,
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
87  sfFtpServiceUnavailable = 421,
88  sfFtpDataConnectionUnavailable = 425,
89  sfFtpTransferAborted = 426,
90  sfFtpFileActionAborted = 450,
91  sfFtpLocalError = 451,
92  sfFtpInsufficientStorageSpace = 452,
93 
94  // 5xx: the command was not accepted and
95  // the requested action did not take place
96  sfFtpCommandUnknown = 500,
97  sfFtpParametersUnknown = 501,
98  sfFtpCommandNotImplemented = 502,
99  sfFtpBadCommandSequence = 503,
100  sfFtpParameterNotImplemented = 504,
101  sfFtpNotLoggedIn = 530,
102  sfFtpNeedAccountToStore = 532,
103  sfFtpFileUnavailable = 550,
104  sfFtpPageTypeUnknown = 551,
105  sfFtpNotEnoughMemory = 552,
106  sfFtpFilenameNotAllowed = 553,
107 
108  // 10xx: SFML custom codes
109  sfFtpInvalidResponse = 1000,
110  sfFtpConnectionFailed = 1001,
111  sfFtpConnectionClosed = 1002,
112  sfFtpInvalidFile = 1003
113 } sfFtpStatus;
114 
115 
122 CSFML_NETWORK_API void sfFtpListingResponse_destroy(sfFtpListingResponse* ftpListingResponse);
123 
135 CSFML_NETWORK_API sfBool sfFtpListingResponse_isOk(const sfFtpListingResponse* ftpListingResponse);
136 
145 CSFML_NETWORK_API sfFtpStatus sfFtpListingResponse_getStatus(const sfFtpListingResponse* ftpListingResponse);
146 
155 CSFML_NETWORK_API const char* sfFtpListingResponse_getMessage(const sfFtpListingResponse* ftpListingResponse);
156 
165 CSFML_NETWORK_API size_t sfFtpListingResponse_getCount(const sfFtpListingResponse* ftpListingResponse);
166 
176 CSFML_NETWORK_API const char* sfFtpListingResponse_getName(const sfFtpListingResponse* ftpListingResponse, size_t index);
177 
184 CSFML_NETWORK_API void sfFtpDirectoryResponse_destroy(sfFtpDirectoryResponse* ftpDirectoryResponse);
185 
197 CSFML_NETWORK_API sfBool sfFtpDirectoryResponse_isOk(const sfFtpDirectoryResponse* ftpDirectoryResponse);
198 
207 CSFML_NETWORK_API sfFtpStatus sfFtpDirectoryResponse_getStatus(const sfFtpDirectoryResponse* ftpDirectoryResponse);
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 
236 CSFML_NETWORK_API void sfFtpResponse_destroy(sfFtpResponse* ftpResponse);
237 
249 CSFML_NETWORK_API sfBool sfFtpResponse_isOk(const sfFtpResponse* ftpResponse);
250 
259 CSFML_NETWORK_API sfFtpStatus sfFtpResponse_getStatus(const sfFtpResponse* ftpResponse);
260 
269 CSFML_NETWORK_API const char* sfFtpResponse_getMessage(const sfFtpResponse* ftpResponse);
270 
277 CSFML_NETWORK_API sfFtp* sfFtp_create(void);
278 
285 CSFML_NETWORK_API void sfFtp_destroy(sfFtp* ftp);
286 
307 CSFML_NETWORK_API sfFtpResponse* sfFtp_connect(sfFtp* ftp, sfIpAddress server, unsigned short port, sfTime timeout);
308 
320 CSFML_NETWORK_API sfFtpResponse* sfFtp_loginAnonymous(sfFtp* ftp);
321 
335 CSFML_NETWORK_API sfFtpResponse* sfFtp_login(sfFtp* ftp, const char* name, const char* password);
336 
345 CSFML_NETWORK_API sfFtpResponse* sfFtp_disconnect(sfFtp* ftp);
346 
358 CSFML_NETWORK_API sfFtpResponse* sfFtp_keepAlive(sfFtp* ftp);
359 
371 CSFML_NETWORK_API sfFtpDirectoryResponse* sfFtp_getWorkingDirectory(sfFtp* ftp);
372 
387 CSFML_NETWORK_API sfFtpListingResponse* sfFtp_getDirectoryListing(sfFtp* ftp, const char* directory);
388 
400 CSFML_NETWORK_API sfFtpResponse* sfFtp_changeDirectory(sfFtp* ftp, const char* directory);
401 
410 CSFML_NETWORK_API sfFtpResponse* sfFtp_parentDirectory(sfFtp* ftp);
411 
424 CSFML_NETWORK_API sfFtpResponse* sfFtp_createDirectory(sfFtp* ftp, const char* name);
425 
440 CSFML_NETWORK_API sfFtpResponse* sfFtp_deleteDirectory(sfFtp* ftp, const char* name);
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 
508 CSFML_NETWORK_API sfFtpResponse* sfFtp_upload(sfFtp* ftp, const char* localFile, const char* remotePath, sfFtpTransferMode mode, sfBool append);
509 
528 CSFML_NETWORK_API sfFtpResponse* sfFtp_sendCommand(sfFtp* ftp, const char* command, const char* parameter);
529 
530 
531 #endif // SFML_FTP_H
sfIpAddress
Encapsulate an IPv4 network address.
Definition: IpAddress.h:40
sfTime
Represents a time value.
Definition: Time.h:39