OSDN Git Service

まちBBSの新URL(PATH_INFO)に対応
authorh677 <h677>
Sun, 6 Jul 2008 13:29:17 +0000 (13:29 +0000)
committerh677 <h677>
Sun, 6 Jul 2008 13:29:17 +0000 (13:29 +0000)
res/ExternalBoardPlugIn/MachiBBSPlugIn.dpr
res/ExternalBoardPlugIn/MachiBBSPlugIn.res

index b3837b9..59ef0ff 100644 (file)
@@ -83,7 +83,7 @@ const
        MAJOR_VERSION                   = 1;
        MINOR_VERSION                   = 0;
        RELEASE_VERSION         = 'beta';
-       REVISION_VERSION        = 18;
+       REVISION_VERSION        = 19;
 
 // =========================================================================
 // \8eG\97p\8aÖ\90\94
@@ -269,6 +269,7 @@ var
 const
        BBS_HOST                = 'machi.to';
        THREAD_MARK     = '/bbs/read.pl';
+    THREAD_MARK2= '/bbs/read.cgi';
 begin
 
        try
@@ -280,6 +281,10 @@ begin
                        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 );
+                if (foundPos = 0) then begin
+                    // \90VURL\91Î\89\9e
+                    foundPos := Pos( THREAD_MARK2, inURL );
+                end;
                                if foundPos > 0 then
                                        Result := atThread
                                else if (uriList.Count > 1) and (uri.Path <> '/') then  // \8dÅ\8cã\82ª '/' \82Å\95Â\82ß\82ç\82ê\82Ä\82é\82È\82ç 3
@@ -309,9 +314,10 @@ procedure OnExtractBoardURL(
 var
        uri                     : TIdURI;
        uriList         : TStringList;
-       URL                     : String;
+       URL         : String;
 const
        THREAD_MARK     = '/bbs/read.pl';
+    THREAD_MARK2= '/bbs/read.cgi';
 begin
        URL := string(inURL);
        if AnsiPos(THREAD_MARK, URL) > 0 then begin
@@ -333,6 +339,27 @@ begin
                        uri.Free;
                        uriList.Free;
                end;
+    end else if AnsiPos(THREAD_MARK2, URL) > 0 then begin
+               if Copy( inURL, Length( inURL ), 1 ) = '/' then
+                       uri := TIdURI.Create( URL )
+               else
+                       uri := TIdURI.Create( URL + '/' );
+
+        uriList := TStringList.Create;
+               try
+                       // http://kanto.machi.to/bbs/read.cgi/kana/1215253035/l50
+                       // http://kanto.machi.to/kana/
+            uriList.Delimiter := '/';
+            uriList.DelimitedText  := uri.Path;
+                       URL := uri.Protocol + '://' + uri.Host + '/';
+            if (uriList.Count >= 4) then begin
+                URL := URL + uriList[3] + '/';
+            end;
+                       outURL := CreateResultString(URL);
+               finally
+                       uri.Free;
+            uriList.Free;
+               end;
        end else begin
        outURL := CreateResultString(URL);
        end;
@@ -873,6 +900,8 @@ var
        uri                             : TIdURI;
        uriList         : TStringList;
        foundPos        : Integer;
+const
+    THREAD_MARK2= '/bbs/read.cgi';
 begin
 
        foundPos := AnsiPos( '?', URL );
@@ -888,7 +917,26 @@ begin
                        uri.Free;
                        uriList.Free;
                end;
-       end;
+       end else begin
+        // \90V\8c`\8e® ?
+        foundPos := AnsiPos(THREAD_MARK2, URL);
+       if (foundPos > 0) then begin
+            uri := TIdURI.Create( URL );
+            uriList := TStringList.Create;
+            try
+                uriList.Delimiter := '/';
+                uriList.DelimitedText  := uri.Path;
+                if (uriList.Count >= 5) then begin
+                           Result :=
+                                   uri.Protocol + '://' + uri.Host + '/bbs/read.pl?' +
+                                   'BBS=' + uriList[3] + '&KEY=' + uriList[4];
+                end;
+            finally
+                       uri.Free;
+                       uriList.Free;
+            end;
+        end;
+    end;
 
 end;
 
index 523d418..ff159e5 100644 (file)
Binary files a/res/ExternalBoardPlugIn/MachiBBSPlugIn.res and b/res/ExternalBoardPlugIn/MachiBBSPlugIn.res differ