diff options
author | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2006-11-01 14:28:18 +0000 |
---|---|---|
committer | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2006-11-01 14:28:18 +0000 |
commit | 31d3a6408d045eadaff094d4c11bf017817743d7 (patch) | |
tree | 61f75240490677d57477fea63d6f771bf3d754d9 /attache/Uploader.h | |
parent | 31654bd814b4e5fdc1b68807e341c623d74f357d (diff) |
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@4 4f64403b-2f21-0410-a795-97e2b3489a10
Diffstat (limited to 'attache/Uploader.h')
-rw-r--r-- | attache/Uploader.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/attache/Uploader.h b/attache/Uploader.h new file mode 100644 index 0000000..49722e6 --- /dev/null +++ b/attache/Uploader.h @@ -0,0 +1,46 @@ +#pragma once
+
+class UploadProgress;
+class UploadSettings;
+class UploadResults;
+
+class Uploader
+{
+ UploadProgress *m_pProgress;
+ UploadSettings *m_pSettings;
+ UploadResults *m_pResults;
+
+public:
+ Uploader(UploadProgress *pProgress)
+ : m_pProgress(pProgress), m_pSettings(NULL), m_pResults(NULL)
+ {
+ }
+
+ HRESULT DoUpload(UploadSettings *pSettings, UploadResults *pResults);
+
+private:
+ TCHAR *GenerateMultipartBoundary();
+ TCHAR *GenerateContentTypeHeader(const TCHAR *strBoundary);
+ DWORD CalculateContentLength(const TCHAR *strBoundary, DWORD *pdwOverallBytesTotal);
+
+ char *GenerateFieldHeader(const TCHAR *strBoundary, const TCHAR *lpszFieldName);
+ DWORD CalculateContentLength(const TCHAR *strBoundary, const TCHAR *lpszFieldName, const TCHAR *lpszFieldValue);
+ HRESULT UploadField(HINTERNET hRequest, const TCHAR *strBoundary, const TCHAR *lpszFieldName, const TCHAR *lpszFieldValue);
+ const char *GenerateFieldTrailer();
+
+ DWORD CalculateContentLength(const TCHAR *strBoundary, const TCHAR * lpszFieldName, const TCHAR * lpszPathName, const TCHAR * lpszContentType, DWORD *pdwOverallBytesTotal);
+ char *GenerateFileHeader(const TCHAR * strBoundary, const TCHAR * lpszFieldName, const TCHAR * lpszPathName, const TCHAR * lpszContentType);
+ HRESULT UploadFile(HINTERNET hRequest, const TCHAR * strBoundary, const TCHAR * lpszFieldName, const TCHAR * lpszPathName, const TCHAR * lpszContentType, DWORD *pdwOverallBytesSent, DWORD dwOverallBytesTotal);
+ HRESULT UploadFileContent(HINTERNET hRequest, const TCHAR * lpszPathName, HANDLE hFile, DWORD *pdwOverallBytesSent, DWORD dwOverallBytesTotal);
+ const char *GenerateFileTrailer();
+
+ char *GenerateBodyTrailer(const TCHAR * strBoundary);
+
+ HRESULT ReadStatusCode(HINTERNET hRequest, DWORD *pStatusCode);
+ HRESULT ReadResponseHeaders(HINTERNET hRequest);
+ HRESULT ReadResponseBody(HINTERNET hRequest);
+
+private:
+ static void CALLBACK StaticInternetStatusCallback(HINTERNET hInternet, DWORD_PTR dwContext, DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength);
+ void InternetStatusCallback(HINTERNET hInternet, DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength);
+};
|