- implemented passive FTP transfers (PASV, needed for firewalls)
[wine/multimedia.git] / dlls / wininet / internet.h
blob79bde8fa473c6a871412c20d2c69bd5e25cbcf60
1 #ifndef _WINE_INTERNET_H_
2 #define _WINE_INTERNET_H_
4 typedef enum
6 WH_HINIT = INTERNET_HANDLE_TYPE_INTERNET,
7 WH_HFTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_FTP,
8 WH_HGOPHERSESSION = INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
9 WH_HHTTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_HTTP,
10 WH_HFILE = INTERNET_HANDLE_TYPE_FTP_FILE,
11 WH_HFINDNEXT = INTERNET_HANDLE_TYPE_FTP_FIND,
12 WH_HHTTPREQ = INTERNET_HANDLE_TYPE_HTTP_REQUEST,
13 } WH_TYPE;
15 typedef struct _WININETHANDLEHEADER
17 WH_TYPE htype;
18 DWORD dwFlags;
19 DWORD dwContext;
20 DWORD dwError;
21 struct _WININETHANDLEHEADER *lpwhparent;
22 } WININETHANDLEHEADER, *LPWININETHANDLEHEADER;
25 typedef struct
27 WININETHANDLEHEADER hdr;
28 LPSTR lpszAgent;
29 LPSTR lpszProxy;
30 LPSTR lpszProxyBypass;
31 DWORD dwAccessType;
32 INTERNET_STATUS_CALLBACK lpfnStatusCB;
33 } WININETAPPINFOA, *LPWININETAPPINFOA;
36 typedef struct
38 WININETHANDLEHEADER hdr;
39 LPSTR lpszServerName;
40 LPSTR lpszUserName;
41 INTERNET_PORT nServerPort;
42 struct sockaddr_in socketAddress;
43 struct hostent *phostent;
44 } WININETHTTPSESSIONA, *LPWININETHTTPSESSIONA;
46 #define HDR_ISREQUEST 0x0001
47 #define HDR_COMMADELIMITED 0x0002
48 #define HDR_SEMIDELIMITED 0x0004
50 typedef struct
52 LPSTR lpszField;
53 LPSTR lpszValue;
54 WORD wFlags;
55 WORD wCount;
56 } HTTPHEADERA, *LPHTTPHEADERA;
59 typedef struct
61 WININETHANDLEHEADER hdr;
62 LPSTR lpszPath;
63 LPSTR lpszVerb;
64 LPSTR lpszHostName;
65 INT nSocketFD;
66 HTTPHEADERA StdHeaders[HTTP_QUERY_MAX+1];
67 HTTPHEADERA *pCustHeaders;
68 INT nCustHeaders;
69 } WININETHTTPREQA, *LPWININETHTTPREQA;
72 typedef struct
74 WININETHANDLEHEADER hdr;
75 int sndSocket;
76 int lstnSocket;
77 int pasvSocket; /* data socket connected by us in case of passive FTP */
78 struct sockaddr_in socketAddress;
79 struct sockaddr_in lstnSocketAddress;
80 struct hostent *phostent;
81 LPSTR lpszPassword;
82 LPSTR lpszUserName;
83 } WININETFTPSESSIONA, *LPWININETFTPSESSIONA;
86 typedef struct
88 WININETHANDLEHEADER hdr;
89 int nDataSocket;
90 } WININETFILE, *LPWININETFILE;
93 typedef struct
95 BOOL bIsDirectory;
96 LPSTR lpszName;
97 DWORD nSize;
98 struct tm tmLastModified;
99 unsigned short permissions;
100 } FILEPROPERTIESA, *LPFILEPROPERTIESA;
103 typedef struct
105 WININETHANDLEHEADER hdr;
106 int index;
107 DWORD size;
108 LPFILEPROPERTIESA lpafp;
109 } WININETFINDNEXTA, *LPWININETFINDNEXTA;
111 typedef enum
113 FTPPUTFILEA,
114 FTPSETCURRENTDIRECTORYA,
115 FTPCREATEDIRECTORYA,
116 FTPFINDFIRSTFILEA,
117 FTPGETCURRENTDIRECTORYA,
118 FTPOPENFILEA,
119 FTPGETFILEA,
120 FTPDELETEFILEA,
121 FTPREMOVEDIRECTORYA,
122 FTPRENAMEFILEA,
123 INTERNETFINDNEXTA,
124 HTTPSENDREQUESTA,
125 HTTPOPENREQUESTA,
126 } ASYNC_FUNC;
128 typedef struct WORKREQ
130 ASYNC_FUNC asyncall;
131 DWORD param1;
132 #define HFTPSESSION param1
134 DWORD param2;
135 #define LPSZLOCALFILE param2
136 #define LPSZREMOTEFILE param2
137 #define LPSZFILENAME param2
138 #define LPSZSRCFILE param2
139 #define LPSZDIRECTORY param2
140 #define LPSZSEARCHFILE param2
141 #define LPSZHEADER param2
142 #define LPSZVERB param2
144 DWORD param3;
145 #define LPSZNEWREMOTEFILE param3
146 #define LPSZNEWFILE param3
147 #define LPFINDFILEDATA param3
148 #define LPDWDIRECTORY param3
149 #define FDWACCESS param3
150 #define LPSZDESTFILE param3
151 #define DWHEADERLENGTH param3
152 #define LPSZOBJECTNAME param3
154 DWORD param4;
155 #define DWFLAGS param4
156 #define LPOPTIONAL param4
158 DWORD param5;
159 #define DWCONTEXT param5
160 #define DWOPTIONALLENGTH param5
162 DWORD param6;
163 #define FFAILIFEXISTS param6
164 #define LPSZVERSION param6
166 DWORD param7;
167 #define DWLOCALFLAGSATTRIBUTE param7
168 #define LPSZREFERRER param7
170 DWORD param8;
171 #define LPSZACCEPTTYPES param8
173 struct WORKREQ *next;
174 struct WORKREQ *prev;
176 } WORKREQUEST, *LPWORKREQUEST;
179 time_t ConvertTimeString(LPCSTR asctime);
181 HINTERNET FTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
182 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
183 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
185 HINTERNET HTTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
186 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
187 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
189 BOOL GetAddress(LPCSTR lpszServerName, INTERNET_PORT nServerPort,
190 struct hostent **phe, struct sockaddr_in *psa);
192 int INTERNET_WriteDataToStream(int nDataSocket, LPCVOID Buffer, DWORD BytesToWrite);
193 int INTERNET_ReadDataFromStream(int nDataSocket, LPVOID Buffer, DWORD BytesToRead);
194 void INTERNET_SetLastError(DWORD dwError);
195 DWORD INTERNET_GetLastError();
196 BOOL INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest);
197 LPSTR INTERNET_GetResponseBuffer();
198 LPSTR INTERNET_GetNextLine(INT nSocket, LPSTR lpszBuffer, LPDWORD dwBuffer);
200 BOOL FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs);
201 BOOL FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn);
202 BOOLAPI FTP_FtpPutFileA(HINTERNET hConnect, LPCSTR lpszLocalFile,
203 LPCSTR lpszNewRemoteFile, DWORD dwFlags, DWORD dwContext);
204 BOOLAPI FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
205 BOOLAPI FTP_FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
206 INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileA(HINTERNET hConnect,
207 LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext);
208 BOOLAPI FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory,
209 LPDWORD lpdwCurrentDirectory);
210 BOOL FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp, LPWIN32_FIND_DATAA lpFindFileData);
211 BOOL FTP_FtpRenameFileA(HINTERNET hFtpSession, LPCSTR lpszSrc, LPCSTR lpszDest);
212 BOOL FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession, LPCSTR lpszDirectory);
213 BOOL FTP_FtpDeleteFileA(HINTERNET hFtpSession, LPCSTR lpszFileName);
214 HINTERNET FTP_FtpOpenFileA(HINTERNET hFtpSession, LPCSTR lpszFileName,
215 DWORD fdwAccess, DWORD dwFlags, DWORD dwContext);
216 BOOLAPI FTP_FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile,
217 BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
218 DWORD dwContext);
220 BOOLAPI HTTP_HttpSendRequestA(HINTERNET hHttpRequest, LPCSTR lpszHeaders,
221 DWORD dwHeaderLength, LPVOID lpOptional ,DWORD dwOptionalLength);
222 INTERNETAPI HINTERNET WINAPI HTTP_HttpOpenRequestA(HINTERNET hHttpSession,
223 LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion,
224 LPCSTR lpszReferrer , LPCSTR *lpszAcceptTypes,
225 DWORD dwFlags, DWORD dwContext);
226 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs);
227 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr);
230 #define MAX_REPLY_LEN 0x5B4
233 #endif /* _WINE_INTERNET_H_ */