From 1fd020a50bbe55fd68127488e09dacac53baa731 Mon Sep 17 00:00:00 2001 From: ikemo Date: Wed, 18 Aug 2004 16:11:45 +0000 Subject: [PATCH] get dat with offlaw.cgi. (hack) git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1303 56b19765-1e22-0410-a548-a0f45d66c51a --- kita/src/libkita/access.cpp | 14 +++++++++++--- kita/src/libkita/datinfo.cpp | 15 ++++++++++++++- kita/src/libkita/datinfo.h | 2 ++ kita/src/libkita/kita_misc.cpp | 6 +++--- kita/src/libkita/kita_misc.h | 2 +- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/kita/src/libkita/access.cpp b/kita/src/libkita/access.cpp index c6f0815..02e06c0 100644 --- a/kita/src/libkita/access.cpp +++ b/kita/src/libkita/access.cpp @@ -12,6 +12,7 @@ #include "thread.h" #include "cache.h" #include "kita_misc.h" +#include "account.h" #include @@ -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 ); } diff --git a/kita/src/libkita/datinfo.cpp b/kita/src/libkita/datinfo.cpp index 1f5e4b5..6a87316 100644 --- a/kita/src/libkita/datinfo.cpp +++ b/kita/src/libkita/datinfo.cpp @@ -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(); diff --git a/kita/src/libkita/datinfo.h b/kita/src/libkita/datinfo.h index 8d27673..1e50c41 100644 --- a/kita/src/libkita/datinfo.h +++ b/kita/src/libkita/datinfo.h @@ -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; diff --git a/kita/src/libkita/kita_misc.cpp b/kita/src/libkita/kita_misc.cpp index add67bf..60bb60b 100644 --- a/kita/src/libkita/kita_misc.cpp +++ b/kita/src/libkita/kita_misc.cpp @@ -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 ); } diff --git a/kita/src/libkita/kita_misc.h b/kita/src/libkita/kita_misc.h index 8a44cf3..7077198 100644 --- a/kita/src/libkita/kita_misc.h +++ b/kita/src/libkita/kita_misc.h @@ -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 -- 2.11.0