-
Notifications
You must be signed in to change notification settings - Fork 0
/
FtpHandler.h
59 lines (49 loc) · 1.29 KB
/
FtpHandler.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#pragma once
#include <string>
#include "ftp/FTPClient.h"
using namespace nsFTP;
using namespace std;
/*
NOTES:
mFtpClient->UploadFile(...) must have fStoreUnique = false.
Passive mode has to be on in all function calls, fPasv = true.
*/
class PatcherDialog;
//! Gets updated when uploading/downloading files.
class ProgressObserver : public CFTPClient::CNotification
{
public:
void SetDialog(PatcherDialog* dialog);
void SetFileSize(long size);
void SetStatus(string status);
void AddText(string text);
void OnBytesReceived(const TByteVector& /*vBuffer*/, long /*lReceivedBytes*/);
void OnBytesSent(const TByteVector& /*vBuffer*/, long /*lSentBytes*/);
private:
PatcherDialog* mDialog;
};
//! Handles everything on the FTP side.
class FtpHandler
{
public:
FtpHandler();
~FtpHandler();
bool Connect();
bool NewVersion();
void DownloadAll(string remoteDirectory, string localDirectory);
void UploadFile(string dest, string file);
void LoadCredentials(string file);
int GetVersion();
int GetNumFiles();
int GetTotalSize();
string GetModifyDate();
void SetObserver(ProgressObserver* observer);
bool IsConnected();
private:
CFTPClient mFtpClient;
ProgressObserver* mObserver;
string mWorkingDirectory;
string mHost, mUser, mPass;
bool mConnected;
};
extern FtpHandler* gFtpHandler;