summaryrefslogtreecommitdiff
path: root/orig/pq/Web.pas
diff options
context:
space:
mode:
Diffstat (limited to 'orig/pq/Web.pas')
-rw-r--r--orig/pq/Web.pas87
1 files changed, 87 insertions, 0 deletions
diff --git a/orig/pq/Web.pas b/orig/pq/Web.pas
new file mode 100644
index 0000000..cf33b39
--- /dev/null
+++ b/orig/pq/Web.pas
@@ -0,0 +1,87 @@
+unit Web;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, WinInet;
+
+type
+ EWebError = class(Exception);
+
+function DownloadString(url: String): String;
+
+var
+ // Change to false to insist on no proxy
+ ProxyOK: Boolean;
+
+implementation
+
+{
+function OpenAuthUrl(net: HInternet; url, username, password: String): HInternet;
+var
+ connection: HInternet;
+begin
+ connection := InternetConnect(net, host, port, nil, nil,
+ INTERNET_SERVICE_HTTP, 0, 0);
+ Result := HttpOpenRequest(Connection, "GET", path,
+ nil, nil, nil,
+ // INTERNET_FLAG_KEEP_CONNECTION or
+ INTERNET_FLAG_RELOAD or
+ INTERNET_FLAG_PRAGMA_NOCACHE or
+ INTERNET_FLAG_NO_UI, 0);
+ InternetSetOption(result, INTERNET_OPTION_USERNAME,
+ PChar(username), len(username));
+ InternetSetOption(result, INTERNET_OPTION_PASSWORD,
+ PChar(password), len(password));
+
+ HttpSendRequest(result, nil, 0, nil, 0);
+ //HttpQueryInfo(Resource, HTTP_QUERY_FLAG_NUMBER |
+ // HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL);
+end;
+ }
+
+function DownloadString(url: string): string;
+var
+ NetHandle: HINTERNET;
+ UrlHandle: HINTERNET;
+ Buffer: array[0..1024] of Char;
+ BytesRead: dWord;
+ conntype: DWORD;
+begin
+ Result := '';
+ conntype := INTERNET_OPEN_TYPE_DIRECT;
+ if proxyok then conntype := INTERNET_OPEN_TYPE_PRECONFIG;
+ NetHandle := InternetOpen('PQ6.2', conntype, nil, nil, 0);
+ if Assigned(NetHandle) then
+ begin {
+ if Len(username + password) > 0 then
+ UrlHandle := OpenAuthUrl(NetHandle, username, password)
+ else }
+ UrlHandle := InternetOpenUrl(NetHandle, PChar(Url),
+ nil, 0, // headers[size]
+ INTERNET_FLAG_KEEP_CONNECTION or
+ INTERNET_FLAG_RELOAD or
+ INTERNET_FLAG_PRAGMA_NOCACHE or
+ INTERNET_FLAG_NO_UI,
+ 0);
+ if Assigned(UrlHandle) then begin
+ repeat
+ InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer)-1, BytesRead);
+ Buffer[BytesRead] := #0;
+ Result := Result + Buffer;
+ until BytesRead = 0;
+ InternetCloseHandle(UrlHandle);
+ end else begin
+ raise EWebError.CreateFmt('Cannot open URL %s', [Url]);
+ end;
+ InternetCloseHandle(NetHandle);
+ end else begin
+ // NetHandle is not valid. Raise an exception
+ raise EWebError.Create('Unable to initialize internet API');
+ end;
+end;
+
+
+initialization
+ ProxyOK := True;
+end.