OSDN Git Service

リリース日修正
[gikonavigoeson/gikonavi.git] / ExternalBoardPlugInMain.pas
index 02a520b..5127b81 100644 (file)
@@ -5,7 +5,7 @@ interface
 uses
        Windows, Classes, SysUtils, Menus,
        IdHTTP, IdComponent, IdGlobal, IdException,
-       AbonUnit;
+       AbonUnit, IdAntiFreezeBase;
 
 type
 
@@ -46,6 +46,14 @@ type
        ): TAcceptType; stdcall;        // URL \82Ì\8eí\97Þ
 
        // *************************************************************************
+       // \8ew\92è\82µ\82½URL\82ð\8c»\8dÝ\82ÌURL\82É\95Ï\8a·\82·\82é
+       // *************************************************************************
+       TOnExtractBoardURL = procedure(
+               inURL : PChar;                                          // \95Ï\8a·\82·\82éURL;
+        var outURL: PChar                                              // \95Ï\8a·\82³\82ê\82½URL
+       ); stdcall;     // \95Ï\8a·\82³\82ê\82½URL
+
+       // *************************************************************************
        // \83\81\83j\83\85\81[\83n\83\93\83h\83\89
        // *************************************************************************
        TOnPlugInMenu = procedure(
@@ -74,7 +82,8 @@ var
 
 implementation
 
-uses ExternalBoardManager, ExternalThreadItem, GikoSystem, BoardGroup, Giko;
+uses ExternalBoardManager, ExternalThreadItem, GikoSystem, BoardGroup, Giko,
+    ReplaceDataModule;
 
 // *************************************************************************
 // \96ß\82è\92l\82ª PChar \82Å\82 \82é API \82Ì\83\81\83\82\83\8a\82ð\8am\95Û\82·\82é
@@ -178,6 +187,7 @@ begin
                inSocket.Request.UserAgent      := GikoSys.GetUserAgent;
                inSocket.RecvBufferSize                 := Gikosys.Setting.RecvBufferSize;
                inSocket.ProxyParams.BasicAuthentication := False;
+               inSocket.ReadTimeout := GikoSys.Setting.ReadTimeOut;
                {$IFDEF DEBUG}
                Writeln('------------------------------------------------------------');
                {$ENDIF}
@@ -229,9 +239,11 @@ var
 //     httpSocket                              : TIdHTTP;
        resStream                                       : TMemoryStream;
        content                                         : string;
-
+const
+       LIVEDOOR_URL = 'http://jbbs.livedoor.jp/';
 begin
 
+
        {$IFDEF DEBUG}
        Writeln('ExternalBoardManager.InternalDownload');
        {$ENDIF}
@@ -240,7 +252,6 @@ begin
        socket := TIdHTTP.Create( nil );
        try
                InitializeSocket( socket );
-
                socket.Request.ContentRangeStart        := inRangeStart;
                socket.Request.ContentRangeEnd          := inRangeEnd;
                if (ioModified <> 0) and (ioModified <> ZERO_DATE) then
@@ -258,19 +269,28 @@ begin
                                {$IFDEF DEBUG}
                                Writeln('URL: ' + inURL);
                                {$ENDIF}
+                //AntiFreeze\82ðDL\8e\9e\82Ì\82Ý\97L\8cø\82É\82·\82é\82±\82Æ\82Å\81A\83R\83R\82Å\82Ì\83`\83F\83b\83N\95s\97v
                                socket.Get( inURL, resStream );
                                {$IFDEF DEBUG}
                                Writeln('\8eæ\93¾\82Å\97á\8aO\82È\82µ');
                                {$ENDIF}
-
                                content                 := GikoSys.GzipDecompress( resStream, socket.Response.ContentEncoding );
+                // \92u\8a·\82·\82é
+                if GikoSys.Setting.ReplaceDat then begin
+                    content := ReplaceDM.Replace(content);
+                end;
 
                                ioModified      := socket.Response.LastModified;
 
                                Result := socket.ResponseCode;
                                if (Length( content ) = 0) and (Result = 206) then
                                        Result := 304;
-
+                               //\82µ\82½\82ç\82ÎJBBS\82Í\83w\83b\83_\82É\83G\83\89\81[\8fî\95ñ\82ª\8dÚ\82é\82ç\82µ\82¢\82Ì\82Å\81A\82±\82±\82Å\83`\83F\83b\83N
+                               if ( AnsiPos(LIVEDOOR_URL, inURL) > 0 ) and (Result = 200) then begin
+                                       if( AnsiPos('STORAGE IN', socket.Response.RawHeaders.Text) > 0 ) then begin
+                                               Result := 302;
+                                       end;
+                               end;
                                outResultData := CreateResultString( content );
                        except
                                on E: EIdSocketError do begin
@@ -319,6 +339,7 @@ end;
 function       InternalPost(
        inURL                                                   : PChar;                        // \91\97\90M\82·\82é URL
        inSource                                        : PChar;                        // \91\97\90M\82·\82é\93à\97e
+       inReferer                       : PChar;                                // Referer
        var outResultData       : PChar                         // \95Ô\82Á\82Ä\82«\82½\95\8e\9a\97ñ
 ) : Longint; stdcall;                                                  // \83\8c\83X\83|\83\93\83X\83R\81[\83h
 var
@@ -326,7 +347,7 @@ var
        content                                         : string;
        resStream                                       : TStringStream;
        sourceStream                    : TStringStream;
-       tmpURL, Protocol, Host, Path, Document, Port, Bookmark : string;
+
 begin
 
        {$IFDEF DEBUG}
@@ -337,13 +358,11 @@ begin
        httpSocket := TIdHTTP.Create( nil );
        try
                InitializeSocket( httpSocket );
-               tmpURL := string(inURL);
-               GikoSys.ParseURI(tmpURL, Protocol,Host, Path, Document, Port, Bookmark);
                httpSocket.Request.CustomHeaders.Add('Pragma: no-cache');
                httpSocket.Request.AcceptLanguage       := 'ja';
                httpSocket.Request.Accept                                       := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
                httpSocket.Request.ContentType          := 'application/x-www-form-urlencoded';
-               httpSocket.Request.Referer                      := Protocol + '://' + Host;
+               httpSocket.Request.Referer                      := string(inReferer);
                resStream                       := TStringStream.Create( content );
                sourceStream    := TStringStream.Create( string( inSource ) );
                try
@@ -455,7 +474,7 @@ begin
 
        // \83_\83~\81[\82Ì\83N\83\89\83X
        board                           := TBoard.Create( nil, 'about://dummy/' );
-       threadItem      := TThreadItem.Create( nil, 'about://dummy/test/read.cgi/dummy/' );
+       threadItem      := TThreadItem.Create( nil, board, 'about://dummy/test/read.cgi/dummy/' );
        try
                try
                        board.Add( threadItem );