activegs-ios/Common/ActiveDownload.h

119 lines
3.3 KiB
C++

/*
ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS
Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net
This code is covered by the GNU GPL licence
*/
#pragma once
#ifdef _WIN32
#define strncasecmp _strnicmp
#define strcasecmp _stricmp
//#define ssnprintf _ssnprintf
#endif
#include "../kegs/Src/StdString.h"
#ifdef UNICODE
#define TOSYSTEMCHAR(X,Y) CStdStringW Y(X);
#define TOSINGLECHAR(X) (X)
#else
#define TOSYSTEMCHAR(X,Y) CStdStringA Y(X);
#define TOSINGLECHAR(X) (X)
#endif
#define MYCHAR char
#define ACTIVEGSCACHEPATH "_DOWNLOADCACHE"
#ifdef _WIN32
#define ACTIVEGS_DIRECTORY_SEPARATOR "\\"
#else
#define ACTIVEGS_DIRECTORY_SEPARATOR "/"
#endif
const char* getfile(const char* p);
const char* getext(const char* filename);
void getdir(const char* p,MyString& _dir);
void normalize(const char* file,MyString& dest);
void removeext(char* filename);
MyString getfilenoext(const char *url);
int calcCRC(const char* ptr);
class CDownload
{
private:
static void initPersistentSystemPath(MyString& path);
static MyString persistentPath;
public:
static void initPersistentPath();
MyString baseURL; // URL of the calling page
const MYCHAR* requiredExt;
bool retrieveDistantFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short);
long retrieveLocalFile(const MYCHAR* url,int _order,MyString& _path,MyString& _short);
bool downloadHTTPFile(const MYCHAR* filename,MyString& _path);
bool unzipFile(const MYCHAR* _url,const MYCHAR* _zipPath);
bool retrieveZippedFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short);
// bool retrieveCachedZippedFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short);
bool retrievePersistentZippedFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short);
public:
void getPersistentDirectoryFile(const char* _file, const char* _dir, MyString &dir);
void getPersistentDownloadedFile(const char* _file, MyString &dir);
CDownload(const char* _baseURL);
~CDownload();
void setRequiredExt(const MYCHAR* _ext) { requiredExt = _ext; }
MyString getPersistentDir(const MYCHAR* url);
static void setPersistentPath(const char* path);
// MyString getPersistentPathname(const char* _subdir,const char* url);
size_t retrieveFile(const MYCHAR* name, MyString& path,MyString& file);
bool GetFile(const char *url, const char *filename);
// cache
/*
bool commitCacheEntry(const char* cacheEntryName, const char* _cacheEntryPath);
bool createCacheEntry(const char* cacheEntryName, MyString& cacheEntryPath);
bool createCacheEntryName(const char* _url, const char* _pathname, int _index, MyString& cacheEntryName);
*/
void setBaseURL(const char* _baseURL);
static const char* getPersistentPath();
static void createDirectory(const MYCHAR* _dir);
static void deleteFile(const MYCHAR* _dir);
static int fileExists(const char*);
void deleteDirectory(const MYCHAR* _dir, int keepDir=0);
void deleteDownloadDirectory();
static bool makeAbsolutePath(const MYCHAR* _myp, const MYCHAR* _base,MyString& _dest);
bool bNotifyDownloadFailure;
bool bTestOnly;
int parseFilenameAndMakeAbsolute(const char* _myp, int& _order, MyString &newurl);
void deleteCachedFile(const MYCHAR* _path);
#if defined(DRIVER_ANDROID)
bool fromMainThread;
#endif
};
//extern CDownload g_download;