OSDN Git Service

add OfflawAccess class (currently, do not work.)
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 15 Aug 2004 09:56:12 +0000 (09:56 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 15 Aug 2004 09:56:12 +0000 (09:56 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1293 56b19765-1e22-0410-a548-a0f45d66c51a

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

index be9bff7..4aad601 100644 (file)
@@ -337,4 +337,77 @@ bool Access::deleteLog( const Thread* thread )
     return KIO::NetAccess::del( str );
 }
 
+//
+// access offlaw.cgi
+//
+QString OfflawAccess::get()
+{
+    QString getURL = m_url.url();
+    // FIXME: getURL
+
+    QString retstr;
+    m_threadData = "";
+    m_firstReceive = FALSE;
+    m_invalidDataReceived = FALSE;
+
+    KIO::SlaveConfig::self() ->setConfigData( "http",
+            KURL( getURL ).host(),
+            "UserAgent",
+            QString( "Monazilla/1.00 (Kita/%1)" ).arg( VERSION ) );
+
+    KIO::TransferJob* job = KIO::get( getURL, true, false );
+    m_currentJob = job;
+
+    connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),
+             SLOT( slotReceiveThreadData( KIO::Job*, const QByteArray& ) ) );
+    connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( slotThreadResult( KIO::Job* ) ) );
+
+    // use 'HTTP-Headers' metadata.
+    job->addMetaData( "PropagateHttpHeader", "true" );
+
+    return QString::null; /* dummy */
+}
+
+void OfflawAccess::slotThreadResult( KIO::Job* job )
+{
+    m_currentJob = 0;
+    if ( job->error() )
+    {
+        job->showErrorDialog();
+    }
+    else
+    {
+        m_header = job->queryMetaData( "HTTP-Headers" );
+    }
+
+    if ( !m_invalidDataReceived && m_threadData.length() )
+    {
+        KURL url = m_url;
+        make_cacheDir( url );
+        writeCacheData();
+    }
+    emit finishLoad();
+}
+
+void OfflawAccess::slotReceiveThreadData( KIO::Job*, const QByteArray& data )
+{
+    QString cstr( data );
+
+    if( ( m_orgData != QString::null && responseCode() != 206 )
+            || ( m_firstReceive && cstr[0] != '\n' )
+            || ( m_orgData == QString::null && responseCode() != 200 )
+      ) m_invalidDataReceived = TRUE;
+
+    if( m_invalidDataReceived ) return;
+
+    /* If this is the first call at resumption, remove LF at head. */
+    if(m_firstReceive)
+    {
+        cstr = cstr.mid(1);
+    }
+    m_firstReceive = FALSE;
+    m_threadData += cstr ;
+    emit receiveData( cstr );
+}
+
 #include "access.moc"
index 345d548..f53cbd9 100644 (file)
@@ -32,7 +32,7 @@ namespace Kita
 
     public:
         Access( const KURL& url ) : m_url( url ), m_currentJob( 0 ) {};
-        ~Access() {};
+        virtual ~Access() {};
 
         QString get();
         void killJob();
@@ -43,9 +43,8 @@ namespace Kita
         int responseCode();
         static bool deleteLog( const Thread* thread );
 
-    private:
+    protected:
         void writeCacheData();
-        void parse_machiBBS();
         void make_cacheDir( const KURL& url );
 
         const KURL m_url;
@@ -56,6 +55,9 @@ namespace Kita
         bool m_firstReceive;
         bool m_invalidDataReceived;
 
+    private:
+        void parse_machiBBS();
+
     private slots:
         void slotReceiveThreadData( KIO::Job* job, const QByteArray& data );
         void slotThreadResult( KIO::Job* job );
@@ -66,6 +68,20 @@ namespace Kita
         void finishLoad();
     };
 
+    class OfflawAccess : public Access
+    {
+        Q_OBJECT
+        
+    public:
+        OfflawAccess( const KURL& url ) : Access( url ) {};
+        virtual ~OfflawAccess() {};
+
+        QString get();
+
+    private slots:
+        void slotReceiveThreadData( KIO::Job* job, const QByteArray& data );
+        void slotThreadResult( KIO::Job* job );
+    };
 }
 
 #endif