OSDN Git Service

文字列比較や文字列コピーを減らしてさらに高速化、一般的なスクリプトで元々の約2.3倍
[winbottle/winbottle.git] / bottleclient / HttpThread.pas
index b1b67f8..fcc8e80 100755 (executable)
@@ -17,6 +17,8 @@ type
     FRecvString: String;
     FProxyServer: String;
     FProxyPort: integer;
+    FProxyUser: String;
+    FProxyPass: String;
     FOnSuccess: TNotifyEvent;
     FOnConnectionFailed: TNotifyEvent;
     FLastErrorMessage: String;
@@ -26,6 +28,8 @@ type
     FTriggerWorkEventBy: integer;
     procedure SetProxyPort(const Value: integer);
     procedure SetProxyServer(const Value: String);
+    procedure SetProxyUser(const Value: String);
+    procedure SetProxyPass(const Value: String);
     procedure SetOnConnectionFailed(const Value: TNotifyEvent);
     procedure SetOnSuccess(const Value: TNotifyEvent);
     procedure SetOnHttpWork(const Value: THttpWorkEvent);
@@ -42,6 +46,8 @@ type
     property RecvString: String read FRecvString;
     property ProxyServer: String read FProxyServer write SetProxyServer;
     property ProxyPort: integer read FProxyPort write SetProxyPort;
+    property ProxyUser: String read FProxyUser write SetProxyUser;
+    property ProxyPass: String read FProxyPass write SetProxyPass;
     property OnConnectionFailed: TNotifyEvent read FOnConnectionFailed write SetOnConnectionFailed;
     property OnSuccess: TNotifyEvent read FOnSuccess write SetOnSuccess;
     property OnHttpWork: THttpWorkEvent read FOnHttpWork write SetOnHttpWork;
@@ -114,6 +120,15 @@ begin
       Http.Host := FHost;
       Http.ProxyParams.ProxyServer := ProxyServer;
       Http.ProxyParams.ProxyPort := ProxyPort;
+
+      if ProxyUser <> '' then begin
+        if ProxyPass <> '' then begin
+          Http.ProxyParams.BasicAuthentication := true;
+          Http.ProxyParams.ProxyUsername := ProxyUser;
+          Http.ProxyParams.ProxyPassword := ProxyPass;
+        end;
+      end;
+
       Http.OnWork := WorkHandler;
       if FPost = '' then begin
         FRecvString := Http.Get(FURL);
@@ -167,6 +182,22 @@ begin
     raise EIdException.Create('Tried to change proxy without suspending');
 end;
 
+procedure THTTPDownloadThread.SetProxyUser(const Value: String);
+begin
+  if Suspended then
+    FProxyUser := Value
+  else
+    raise EIdException.Create('Tried to change proxy without suspending');
+end;
+
+procedure THTTPDownloadThread.SetProxyPass(const Value: String);
+begin
+  if Suspended then
+    FProxyPass := Value
+  else
+    raise EIdException.Create('Tried to change proxy without suspending');
+end;
+
 procedure THTTPDownloadThread.SetTriggerWorkEventBy(const Value: integer);
 begin
   FTriggerWorkEventBy := Value;