Ftp.h
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2023 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
41typedef enum
42{
43 sfFtpBinary,
44 sfFtpAscii,
45 sfFtpEbcdic
46} sfFtpTransferMode;
47
48
53typedef 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
122CSFML_NETWORK_API void sfFtpListingResponse_destroy(sfFtpListingResponse* ftpListingResponse);
123
135CSFML_NETWORK_API sfBool sfFtpListingResponse_isOk(const sfFtpListingResponse* ftpListingResponse);
136
145CSFML_NETWORK_API sfFtpStatus sfFtpListingResponse_getStatus(const sfFtpListingResponse* ftpListingResponse);
146
155CSFML_NETWORK_API const char* sfFtpListingResponse_getMessage(const sfFtpListingResponse* ftpListingResponse);
156
165CSFML_NETWORK_API size_t sfFtpListingResponse_getCount(const sfFtpListingResponse* ftpListingResponse);
166
176CSFML_NETWORK_API const char* sfFtpListingResponse_getName(const sfFtpListingResponse* ftpListingResponse, size_t index);
177
184CSFML_NETWORK_API void sfFtpDirectoryResponse_destroy(sfFtpDirectoryResponse* ftpDirectoryResponse);
185
197CSFML_NETWORK_API sfBool sfFtpDirectoryResponse_isOk(const sfFtpDirectoryResponse* ftpDirectoryResponse);
198
207CSFML_NETWORK_API sfFtpStatus sfFtpDirectoryResponse_getStatus(const sfFtpDirectoryResponse* ftpDirectoryResponse);
208
217CSFML_NETWORK_API const char* sfFtpDirectoryResponse_getMessage(const sfFtpDirectoryResponse* ftpDirectoryResponse);
218
227CSFML_NETWORK_API const char* sfFtpDirectoryResponse_getDirectory(const sfFtpDirectoryResponse* ftpDirectoryResponse);
228
229
236CSFML_NETWORK_API void sfFtpResponse_destroy(sfFtpResponse* ftpResponse);
237
249CSFML_NETWORK_API sfBool sfFtpResponse_isOk(const sfFtpResponse* ftpResponse);
250
259CSFML_NETWORK_API sfFtpStatus sfFtpResponse_getStatus(const sfFtpResponse* ftpResponse);
260
269CSFML_NETWORK_API const char* sfFtpResponse_getMessage(const sfFtpResponse* ftpResponse);
270
277CSFML_NETWORK_API sfFtp* sfFtp_create(void);
278
285CSFML_NETWORK_API void sfFtp_destroy(sfFtp* ftp);
286
307CSFML_NETWORK_API sfFtpResponse* sfFtp_connect(sfFtp* ftp, sfIpAddress server, unsigned short port, sfTime timeout);
308
320CSFML_NETWORK_API sfFtpResponse* sfFtp_loginAnonymous(sfFtp* ftp);
321
335CSFML_NETWORK_API sfFtpResponse* sfFtp_login(sfFtp* ftp, const char* name, const char* password);
336
345CSFML_NETWORK_API sfFtpResponse* sfFtp_disconnect(sfFtp* ftp);
346
358CSFML_NETWORK_API sfFtpResponse* sfFtp_keepAlive(sfFtp* ftp);
359
371CSFML_NETWORK_API sfFtpDirectoryResponse* sfFtp_getWorkingDirectory(sfFtp* ftp);
372
387CSFML_NETWORK_API sfFtpListingResponse* sfFtp_getDirectoryListing(sfFtp* ftp, const char* directory);
388
400CSFML_NETWORK_API sfFtpResponse* sfFtp_changeDirectory(sfFtp* ftp, const char* directory);
401
410CSFML_NETWORK_API sfFtpResponse* sfFtp_parentDirectory(sfFtp* ftp);
411
424CSFML_NETWORK_API sfFtpResponse* sfFtp_createDirectory(sfFtp* ftp, const char* name);
425
440CSFML_NETWORK_API sfFtpResponse* sfFtp_deleteDirectory(sfFtp* ftp, const char* name);
441
455CSFML_NETWORK_API sfFtpResponse* sfFtp_renameFile(sfFtp* ftp, const char* file, const char* newName);
456
471CSFML_NETWORK_API sfFtpResponse* sfFtp_deleteFile(sfFtp* ftp, const char* name);
472
489CSFML_NETWORK_API sfFtpResponse* sfFtp_download(sfFtp* ftp, const char* remoteFile, const char* localPath, sfFtpTransferMode mode);
490
508CSFML_NETWORK_API sfFtpResponse* sfFtp_upload(sfFtp* ftp, const char* localFile, const char* remotePath, sfFtpTransferMode mode, sfBool append);
509
528CSFML_NETWORK_API sfFtpResponse* sfFtp_sendCommand(sfFtp* ftp, const char* command, const char* parameter);
529
530
531#endif // SFML_FTP_H
Encapsulate an IPv4 network address.
Definition IpAddress.h:40
Represents a time value.
Definition Time.h:39