OSDN Git Service

ExtructBoardURLでスレのURLじゃなくてBoardのURLを送っても
authorh677 <h677>
Sun, 15 May 2005 02:14:17 +0000 (02:14 +0000)
committerh677 <h677>
Sun, 15 May 2005 02:14:17 +0000 (02:14 +0000)
エラーが出ないように修正

res/ExternalBoardPlugIn/MachiBBSPlugIn.dpr
res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.dpr

index 89e9ef3..f2f1053 100644 (file)
@@ -275,7 +275,7 @@ begin
                uri                     := TIdURI.Create( inURL );
                uriList := TStringList.Create;
                try
-                       ExtractHttpFields( ['/'], [], uri.Path, uriList );
+                       ExtractHttpFields( ['/'], [], uri.Path, uriList );
                        foundPos := AnsiPos( BBS_HOST, uri.Host );
                        if (foundPos > 0) and (Length( uri.Host ) - foundPos + 1 = Length( BBS_HOST )) then begin
                                foundPos := Pos( THREAD_MARK, inURL );
@@ -303,31 +303,37 @@ end;
 // *************************************************************************
 procedure OnExtractBoardURL(
        inURL   : PChar;
-    var outURL : PChar
+       var outURL      : PChar
 ); stdcall;
 var
        uri                     : TIdURI;
        uriList         : TStringList;
-    URL                        : String;
+       URL                     : String;
+const
+       THREAD_MARK     = '/bbs/read.pl';
 begin
-    URL := string(inURL);
-       if Copy( inURL, Length( inURL ), 1 ) = '/' then
-               uri := TIdURI.Create( URL )
-       else
-               uri := TIdURI.Create( URL + '/' );
+       URL := string(inURL);
+       if AnsiPos(THREAD_MARK, URL) > 0 then begin
+               if Copy( inURL, Length( inURL ), 1 ) = '/' then
+                       uri := TIdURI.Create( URL )
+               else
+                       uri := TIdURI.Create( URL + '/' );
 
-       uriList := TStringList.Create;
-       try
-               ExtractHttpFields(
-                       ['&'], [],
-                       Copy( uri.Params, AnsiPos( '?', uri.Params ) + 1, Length( uri.Params ) ),uriList );
-               // http://hokkaido.machi.to/bbs/read.pl?BBS=hokkaidou&KEY=1061764446
-               // http://hokkaido.machi.to/hokkaidou/
-        URL := uri.Protocol + '://' + uri.Host + '/' + uriList.Values[ 'BBS' ] + '/';
-        outURL := CreateResultString(URL);
-       finally
-               uri.Free;
-               uriList.Free;
+               uriList := TStringList.Create;
+               try
+                       ExtractHttpFields(
+                               ['&'], [],
+                               Copy( uri.Params, AnsiPos( '?', uri.Params ) + 1, Length( uri.Params ) ),uriList );
+                       // http://hokkaido.machi.to/bbs/read.pl?BBS=hokkaidou&KEY=1061764446
+                       // http://hokkaido.machi.to/hokkaidou/
+                       URL := uri.Protocol + '://' + uri.Host + '/' + uriList.Values[ 'BBS' ] + '/';
+                       outURL := CreateResultString(URL);
+               finally
+                       uri.Free;
+                       uriList.Free;
+               end;
+       end else begin
+       outURL := CreateResultString(URL);
        end;
 
 end;
index eb0d5af..0bbcefd 100644 (file)
@@ -3,7 +3,7 @@ library ShitarabaJBBSPlugIn;
 {
        ShitarabaJBBSPlugIn
        \82µ\82½\82ç\82Î\8f\88\97\9d\83\86\83j\83b\83g
-       $Id: ShitarabaJBBSPlugIn.dpr,v 1.38.2.2 2005/05/05 12:15:25 h677 Exp $
+       $Id: ShitarabaJBBSPlugIn.dpr,v 1.38.2.3 2005/05/15 02:14:17 h677 Exp $
 }
 
 uses
@@ -408,39 +408,44 @@ var
        uri             : TIdURI;
        uriList : TStringList;
        tmphost :       String;
-    URL                :       String;
+       URL             :       String;
 const
        BBS_HOST_OLD    = 'jbbs.shitaraba.com';
        BBS_HOST_OLD2   = 'jbbs.livedoor.com';
        BBS_HOST                = 'jbbs.livedoor.jp';
-    THREAD_MARK                = '/bbs/read.cgi/';
+       THREAD_MARK             = '/bbs/read.cgi/';
 begin
-    if AnsiPos(THREAD_MARK, string(inURL)) > 0 then begin
-        URL            := BrowsableURL(string(inURL));
-        uri                    := TIdURI.Create( URL );
-        uriList := TStringList.Create;
-        try
-            ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
-
-            tmphost := uri.Host;
-
-            if (tmphost = BBS_HOST_OLD) or (tmphost = BBS_HOST_OLD2) then
-                tmphost := BBS_HOST;
-
-            // http://jbbs.livedoor.com/bbs/read.cgi/computer/351/1090404452/l100
-            // http://jbbs.livedoor.com/bbs/read.cgi/game/1578/1067968274/l100
-            // http://jbbs.livedoor.com/game/1000/subject.txt
-            if uriList.Count > 4 then
-               URL             := uri.Protocol + '://' + tmphost + '/' + uriList[ 3 ] + '/' + uriList[ 4 ] + '/';
-            outURL     := CreateResultString(URL);
-        finally
-            uri.Free;
-            uriList.Free;
-        end;
-    end else begin
-       URL := string(inURL);
-       outURL  := CreateResultString(URL);
-    end;
+
+       if AnsiPos(THREAD_MARK, string(inURL)) > 0 then begin
+               URL             := BrowsableURL(string(inURL));
+               uri                     := TIdURI.Create( URL );
+               uriList := TStringList.Create;
+               try
+                       ExtractHttpFields( ['/', '?'], [], uri.Path, uriList );
+
+                       tmphost := uri.Host;
+
+                       if (tmphost = BBS_HOST_OLD) or (tmphost = BBS_HOST_OLD2) then
+                               tmphost := BBS_HOST;
+
+                       // http://jbbs.livedoor.com/bbs/read.cgi/computer/351/1090404452/l100
+                       // http://jbbs.livedoor.com/bbs/read.cgi/game/1578/1067968274/l100
+                       // http://jbbs.livedoor.com/game/1000/subject.txt
+
+                       if uriList.Count > 4 then
+                               URL             := uri.Protocol + '://' + tmphost + '/' + uriList[ 3 ] + '/' + uriList[ 4 ] + '/';
+
+                       outURL  := CreateResultString(URL);
+               finally
+                       uri.Free;
+                       uriList.Free;
+               end;
+       end else begin
+               URL := string(inURL);
+               URL := CustomStringReplace(URL, BBS_HOST_OLD, BBS_HOST);
+               URL := CustomStringReplace(URL, BBS_HOST_OLD2, BBS_HOST);
+               outURL  := CreateResultString(URL);
+       end;
 
 end;
 // *************************************************************************