OSDN Git Service

get dat with offlaw.cgi. (hack)
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Wed, 18 Aug 2004 16:11:45 +0000 (16:11 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Wed, 18 Aug 2004 16:11:45 +0000 (16:11 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1303 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/libkita/access.cpp
kita/src/libkita/datinfo.cpp
kita/src/libkita/datinfo.h
kita/src/libkita/kita_misc.cpp
kita/src/libkita/kita_misc.h

index c6f0815..02e06c0 100644 (file)
@@ -12,6 +12,7 @@
 #include "thread.h"
 #include "cache.h"
 #include "kita_misc.h"
+#include "account.h"
 
 #include <config.h>
 
@@ -308,8 +309,9 @@ bool Access::deleteLog( const Thread* thread )
 //
 QString OfflawAccess::get()
 {
-    QString getURL = m_datURL.url();
-    // FIXME: getURL
+    QString getURL = Kita::datToOfflaw( m_datURL.url() );
+    KURL kgetURL( getURL );
+    kgetURL.addQueryItem( "sid", Account::getSessionID() );
 
     QString retstr;
     m_threadData = "";
@@ -320,7 +322,7 @@ QString OfflawAccess::get()
             "UserAgent",
             QString( "Monazilla/1.00 (Kita/%1)" ).arg( VERSION ) );
 
-    KIO::TransferJob* job = KIO::get( getURL, true, false );
+    KIO::TransferJob* job = KIO::get( kgetURL, true, false );
     m_currentJob = job;
 
     connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),
@@ -361,6 +363,12 @@ void OfflawAccess::slotReceiveThreadData( KIO::Job*, const QByteArray& data )
 
     if ( m_invalidDataReceived ) return ;
 
+    // "+OK ....../1024K\tLocation:temp/\n"
+    if ( m_threadData.isEmpty() && cstr[0] == '+' ) {
+        // skip first line.
+        int index = cstr.find( '\n' );
+        cstr = cstr.mid( index + 1 );
+    }
     m_threadData += cstr ;
     emit receiveData( cstr );
 }
index 1f5e4b5..6a87316 100644 (file)
@@ -26,6 +26,8 @@
 #include "kita-utf8.h"
 #include "kita-utf16.h"
 #include "kita_misc.h"
+#include "account.h"
+
 
 using namespace Kita;
 
@@ -36,7 +38,7 @@ using namespace Kita;
 /*------------------------------------------------------*/
 /* DatInfo stores & handles all information about *.dat */
 
-DatInfo::DatInfo( const KURL& url ) : m_access ( 0 )
+DatInfo::DatInfo( const KURL& url ) : m_access ( 0 ), m_access2( 0 )
 {
     QString refstr;
     m_datURL = Kita::ParseMisc::parseURL( url, refstr );
@@ -309,6 +311,17 @@ void DatInfo::slotFinishLoad()
     /* copy the last line */
     copyRawDataToBuffer( QString::null );
 
+    if ( m_readNum == 0 && m_access2 == NULL ) {
+        if ( Account::isLogged() ) {
+            qDebug("offlaw access.\n");
+            m_access2 = new OfflawAccess( m_datURL );
+            connect( m_access2, SIGNAL( receiveData( const QString& ) ),
+                      SLOT( slotReceiveData( const QString& ) ) );
+            connect( m_access2, SIGNAL( finishLoad() ), SLOT( slotFinishLoad() ) );
+            m_access2->get();
+            return;
+        }
+    }
     /* finish loading session & emit signal to the parent object */
     m_nowLoading = FALSE;
     emit finishLoad();
index 8d27673..1e50c41 100644 (file)
@@ -95,6 +95,7 @@ namespace Kita
 {
 
     class Access;
+    class OfflawAccess;
     class Thread;
 
     /*-----------------------*/
@@ -117,6 +118,7 @@ namespace Kita
 
         /* for caching */
         Access* m_access;
+        OfflawAccess* m_access2;
         Thread* m_thread;
         QString m_lastLine;
         bool m_nowLoading;
index add67bf..60bb60b 100644 (file)
@@ -153,9 +153,9 @@ uint Kita::datToSince( const QString& datURL )
 
 /**
  * http://pc5.2ch.net/linux/dat/1089905503.dat
- * -> http://pc5.2ch.net/test/offlaw.cgi?bbs=linux&key=1089905503&sid=xxxxx
+ * -> http://pc5.2ch.net/test/offlaw.cgi?bbs=linux&key=1089905503
  */
-QString Kita::datToOfflaw( const QString& datURL, const QString& sessionID )
+QString Kita::datToOfflaw( const QString& datURL )
 {
     /* TODO: not tested. */
     KURL url( datURL );
@@ -175,5 +175,5 @@ QString Kita::datToOfflaw( const QString& datURL, const QString& sessionID )
     url.cd( ".." );
     QString board = url.fileName();
 
-    return QString( "%1/test/offlaw.cgi?bbs=%2&key=%3&sid=%4" ).arg( root, board, datName, sessionID );
+    return QString( "http://%1/test/offlaw.cgi?raw=0.0&bbs=%2&key=%3" ).arg( root, board, datName );
 }
index 8a44cf3..7077198 100644 (file)
@@ -35,7 +35,7 @@ namespace Kita
     QString unescape( const QString& str );
     int boardType( const QString& url );
     uint datToSince( const QString& datURL );
-    QString datToOfflaw( const QString& datURL, const QString& sessionID );
+    QString datToOfflaw( const QString& datURL );
 }
 
 #endif