OSDN Git Service

allows k2ch:// protocol
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 3 Jan 2004 04:10:06 +0000 (04:10 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 3 Jan 2004 04:10:06 +0000 (04:10 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@775 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/libkita/kita_misc.cpp
kita/src/libkita/tests/urlconverttest.cpp
kita/src/libkita/tests/urlconverttest.h

index b986005..38f54fc 100644 (file)
@@ -1,74 +1,91 @@
 /***************************************************************************
- *   Copyright (C) 2003 by Hideki Ikemoto                                  *
- *   ikemo@wakaba.jp                                                       *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- ***************************************************************************/
+*   Copyright (C) 2003 by Hideki Ikemoto                                  *
+*   ikemo@wakaba.jp                                                       *
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+***************************************************************************/
 #include "kita_misc.h"
 
 #include <kurl.h>
 #include <qregexp.h>
 
-namespace Kita {
-
-QString datToBoard( const QString& datURL )
+QString Kita::datToBoard( const QString& datURL )
 {
     KURL url( datURL );
     return KURL( url, "../" ).url();
 }
 
-QString datToThread( const QString& datURL )
+QString Kita::datToThread( const QString& datURL )
 {
-  QRegExp regexp( "http://([^/]*)/([^/]*)/dat/(.*)\\.dat" );
-  if( regexp.search( datURL ) == -1 ) {
-    // no match
-    return "";
-  }
-  QString url= QString( "http://%1/test/read.cgi/%2/%3/" )
-                        .arg( regexp.cap(1) )
-                        .arg( regexp.cap(2) )
-                        .arg( regexp.cap(3) );
-  return url;
+    // http://<host>/<board>/dat/<datname>.dat
+    KURL url( datURL );
+    QString protocol = url.protocol();
+    QString host = url.host();
+
+    QStringList list = QStringList::split( ".", url.fileName() );
+    if ( list.size() != 2 ) {
+        return "";
+    }
+    QString datName = list[ 0 ];
+
+    url.cd( ".." );
+    if ( url.fileName() != "dat" ) {
+        return "";
+    }
+
+    url.cd( ".." );
+    QString board = url.fileName();
+
+    url.cd( ".." );
+    if ( url.fileName() != "" ) {
+        return "";
+    }
+
+    KURL newURL;
+    newURL.setProtocol( protocol );
+    newURL.setHost( host );
+    newURL.addPath( QString( "/test/read.cgi/%2/%3/" )
+                    .arg( board ).arg( datName ) );
+
+    return newURL.url();
 }
 
-QString threadToDat( const QString& threadURL )
+QString Kita::threadToDat( const QString& threadURL )
 {
-  QRegExp regexp( "http://([^/]*)/test/read\\.cgi/([^/]*)/([^/]*)/?" );
-  if( regexp.search( threadURL ) == -1 ) {
-    // no match
-    return "";
-  }
-  QString url = QString( "http://%1/%2/dat/%3.dat" )
-                         .arg( regexp.cap(1) )
-                         .arg( regexp.cap(2) )
-                         .arg( regexp.cap(3) );
-  return url;
+    QRegExp regexp( "http://([^/]*)/test/read\\.cgi/([^/]*)/([^/]*)/?" );
+    if ( regexp.search( threadURL ) == -1 ) {
+        // no match
+        return "";
+    }
+    QString url = QString( "http://%1/%2/dat/%3.dat" )
+                  .arg( regexp.cap( 1 ) )
+                  .arg( regexp.cap( 2 ) )
+                  .arg( regexp.cap( 3 ) );
+    return url;
 }
 
-QString boardToSubject( const QString& boardURL )
+QString Kita::boardToSubject( const QString& boardURL )
 {
-  KURL url( boardURL );
-  url.addPath( "subject.txt" );
-  return url.url();
+    KURL url( boardURL );
+    url.addPath( "subject.txt" );
+    return url.url();
 }
 
-QString subjectToBoard( const QString& subjectURL )
+QString Kita::subjectToBoard( const QString& subjectURL )
 {
-  return KURL( subjectURL, "." ).url();
+    return KURL( subjectURL, "." ).url();
 }
 
-QString datToCache( const QString& datURL )
+QString Kita::datToCache( const QString& datURL )
 {
-  QRegExp regexp( "http://([^/]*)/([^/]*)/dat/(.*)" );
-  if( regexp.search( datURL ) == -1 ) {
-    return "";
-  }
-  return QString( "%1/%2/%3" ).arg( regexp.cap(1) )
-                              .arg( regexp.cap(2) )
-                              .arg( regexp.cap(3) );
+    QRegExp regexp( "http://([^/]*)/([^/]*)/dat/(.*)" );
+    if ( regexp.search( datURL ) == -1 ) {
+        return "";
+    }
+    return QString( "%1/%2/%3" ).arg( regexp.cap( 1 ) )
+           .arg( regexp.cap( 2 ) )
+           .arg( regexp.cap( 3 ) );
 }
-
-};
index c493910..293fe3c 100644 (file)
@@ -12,7 +12,9 @@
 void URLConvertTest::setUp()
 {
   m_datURL = "http://pc.2ch.net/linux/dat/1022744633.dat";
+  m_datURL_k2ch = "k2ch://pc.2ch.net/linux/dat/1022744633.dat";
   m_threadURL = "http://pc.2ch.net/test/read.cgi/linux/1022744633/";
+  m_threadURL_k2ch = "k2ch://pc.2ch.net/test/read.cgi/linux/1022744633/";
   m_threadURL2 = "http://pc.2ch.net/test/read.cgi/linux/1022744633";
   m_subjectURL = "http://pc.2ch.net/linux/subject.txt";
   m_boardURL = "http://pc.2ch.net/linux/";
@@ -29,6 +31,7 @@ void URLConvertTest::tearDown()
 void URLConvertTest::testDatToThread()
 {
   CPPUNIT_ASSERT_EQUAL( m_threadURL, Kita::datToThread( m_datURL ) );
+  CPPUNIT_ASSERT_EQUAL( m_threadURL_k2ch, Kita::datToThread( m_datURL_k2ch ) );
 }
 
 void URLConvertTest::testThreadToDat()
@@ -40,7 +43,6 @@ void URLConvertTest::testThreadToDat()
 void URLConvertTest::testBoardToSubject()
 {
   CPPUNIT_ASSERT_EQUAL( m_subjectURL, Kita::boardToSubject( m_boardURL ) );
-  CPPUNIT_ASSERT_EQUAL( m_subjectURL, Kita::boardToSubject( m_boardURL ) );
 }
 
 void URLConvertTest::testSubjectToBoard()
index a5fb91e..51a136c 100644 (file)
@@ -27,7 +27,9 @@ class URLConvertTest : public CppUnit::TestFixture {
   CPPUNIT_TEST_SUITE_END();
 
   QString m_datURL;
+  QString m_datURL_k2ch;
   QString m_threadURL;
+  QString m_threadURL_k2ch;
   QString m_threadURL2;
   QString m_subjectURL;
   QString m_boardURL;