Browse Source

supports HTML redirect in clipboard

Johann ELSASS 4 years ago
parent
commit
6b0c9eaf02
2 changed files with 25 additions and 7 deletions
  1. 3 2
      lazpaint/uclipboard.pas
  2. 22 5
      lazpaint/uonline.pas

+ 3 - 2
lazpaint/uclipboard.pas

@@ -31,7 +31,7 @@ implementation
 uses Dialogs, BGRABitmapTypes, Clipbrd, Graphics, LCLIntf, LCLType, GraphType
     {$IFDEF PDN_CLIPBOARD_FORMAT}, math, BGRADNetDeserial{$ENDIF}
     {$IFDEF BMP_CLIPBOARD_FORMAT}, FPWriteBMP{$ENDIF}
-    {$IFDEF HTML_CLIPBOARD_FORMAT}, fphttpclient{$ENDIF};
+    {$IFDEF HTML_CLIPBOARD_FORMAT}, UOnline{$ENDIF};
 
 {$IFDEF DEBUG_CLIPBOARD}
 const
@@ -216,6 +216,7 @@ var
   stream: TMemoryStream;
   url: string;
 begin
+  result := nil;
   if tokens.Count > 0 then
   begin
     if UpperCase(tokens[0]) = 'IMG' then
@@ -229,7 +230,7 @@ begin
           delete(url,5,1);
         stream := TMemoryStream.Create;
         try
-          TFPHttpClient.SimpleGet(url,stream);
+          MyHttpGet(url,stream);
           stream.Position:= 0;
           result := TBGRABitmap.Create(stream);
         except on ex: exception do begin

+ 22 - 5
lazpaint/uonline.pas

@@ -57,6 +57,8 @@ type
     destructor Destroy; override;
   end;
 
+procedure MyHttpGet(AURL: string; ADestStream: TStream);
+
 implementation
 
 uses LazFileUtils, Dialogs,
@@ -76,6 +78,25 @@ begin
       exit;
 end;
 
+procedure MyHttpGet(AURL: string; ADestStream: TStream);
+{$IFDEF USE_NS_URL_REQUEST}
+begin
+  TNSHTTPSendAndReceive.SimpleGet(AURL, ADestStream);
+end
+{$ELSE}
+var client: TFPHTTPClient;
+begin
+  client := TFPHTTPClient.Create(nil);
+  try
+    client.KeepConnection:= false;
+    client.AllowRedirect:= true;
+    client.Get(AURL, ADestStream);
+  finally
+    client.Free;
+  end;
+end;
+{$ENDIF}
+
 { THttpGetThread }
 
 procedure THttpGetThread.NotifySuccess;
@@ -100,11 +121,7 @@ var stream: TMemoryStream;
 begin
   stream := TMemoryStream.Create;
   try
-    {$IFDEF USE_NS_URL_REQUEST}
-    TNSHTTPSendAndReceive.SimpleGet(FUrl, stream);
-    {$ELSE}
-    TFPHTTPClient.SimpleGet(FUrl, stream);
-    {$ENDIF}
+    MyHttpGet(FUrl, stream);
     setlength(FBuffer, stream.Size);
     stream.Position:= 0;
     stream.Read(FBuffer[1], length(FBuffer));