uses
Windows, Classes, SysUtils, Menus,
IdHTTP, IdComponent, IdGlobal, IdException,
- AbonUnit;
+ AbonUnit, IdAntiFreezeBase;
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(
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é
inSocket.Request.UserAgent := GikoSys.GetUserAgent;
inSocket.RecvBufferSize := Gikosys.Setting.RecvBufferSize;
inSocket.ProxyParams.BasicAuthentication := False;
+ inSocket.ReadTimeout := GikoSys.Setting.ReadTimeOut;
{$IFDEF DEBUG}
Writeln('------------------------------------------------------------');
{$ENDIF}
// httpSocket : TIdHTTP;
resStream : TMemoryStream;
content : string;
-
+const
+ LIVEDOOR_URL = 'http://jbbs.livedoor.jp/';
begin
+
{$IFDEF DEBUG}
Writeln('ExternalBoardManager.InternalDownload');
{$ENDIF}
socket := TIdHTTP.Create( nil );
try
InitializeSocket( socket );
-
socket.Request.ContentRangeStart := inRangeStart;
socket.Request.ContentRangeEnd := inRangeEnd;
if (ioModified <> 0) and (ioModified <> ZERO_DATE) then
{$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
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
content : string;
resStream : TStringStream;
sourceStream : TStringStream;
- tmpURL, Protocol, Host, Path, Document, Port, Bookmark : string;
+
begin
{$IFDEF DEBUG}
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
// \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 );