From 14a6aa4c488bcd2d49103cbee1424b2769d77ce0 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 12 Aug 2016 14:05:45 +0200 Subject: Initial import --- orig/pq/Web.pas | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 orig/pq/Web.pas (limited to 'orig/pq/Web.pas') 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. -- cgit v1.2.3