CVS commit by tilladam: Cleanup, only accept text/calendar. M +17 -12 kcal_resourceopengroupware.cpp 1.17 M +0 -2 kcal_resourceopengroupware.h 1.8 --- kdepim/kresources/opengroupware/kcal_resourceopengroupware.cpp #1.16:1.17 @@ -171,5 +171,4 @@ bool OpenGroupware::doLoad() mIncidencesForDownload.clear(); - mVersionsPendingDownload.clear(); mProgress = KPIM::ProgressManager::instance()->createProgressItem( @@ -255,8 +254,8 @@ void OpenGroupware::slotListJobResult( K i = mCalendar.incidence( localId ); if ( !i ) { - kdDebug(7000) << "Not locally present, download: " << location << endl; + //kdDebug(7000) << "Not locally present, download: " << location << endl; download = true; } else { - kdDebug(7000) << "Locally present " << endl; + //kdDebug(7000) << "Locally present " << endl; /* locally present, let's check if it's newer than what we have */ const QString &oldFingerprint = idMapper().fingerprint( i->uid() ); @@ -273,10 +272,9 @@ void OpenGroupware::slotListJobResult( K } } else { - kdDebug(7000) << "Fingerprint did not change, don't download this one " << endl; + //kdDebug(7000) << "Fingerprint did not change, don't download this one " << endl; } } if ( download ) { mIncidencesForDownload << entry; - mVersionsPendingDownload.insert( location, newFingerprint ); } } @@ -304,5 +302,6 @@ void OpenGroupware::downloadNextIncidenc mDownloadJob = KIO::get( url, false, false ); - mDownloadJob->addMetaData( "PropagateHTTPHeader", "true" ); + mDownloadJob->addMetaData( "accept", "text/calendar" ); + mDownloadJob->addMetaData( "PropagateHttpHeader", "true" ); connect( mDownloadJob, SIGNAL( result( KIO::Job * ) ), SLOT( slotJobResult( KIO::Job * ) ) ); @@ -340,7 +339,16 @@ void OpenGroupware::slotUploadJobResult( } + +static const QString getEtagFromHeaders( const QString& headers ) +{ + kdDebug(5006) << "HEADERS " << headers << endl; + int start = headers.find( "etag:" ); + start += 6; + return headers.mid( start, headers.find( "\n", start ) - start ); +} + void OpenGroupware::slotJobResult( KIO::Job *job ) { -// kdDebug() << "OpenGroupware::slotJobResult(): " << endl; + kdDebug() << "OpenGroupware::slotJobResult(): " << endl; if ( job->error() ) { @@ -350,5 +358,5 @@ void OpenGroupware::slotJobResult( KIO:: } else { const QString& headers = job->queryMetaData( "HTTP-Headers" ); - kdDebug(7000) << "HEADERS: " << endl << headers << endl; + const QString& etag = getEtagFromHeaders( headers ); CalendarLocal calendar; ICalFormat ical; @@ -368,7 +376,5 @@ void OpenGroupware::slotJobResult( KIO:: i->setUid( local ); } - assert( mVersionsPendingDownload.contains( remote ) ); - idMapper().setFingerprint( i->uid(), mVersionsPendingDownload[ remote ] ); - // TODO verify the downloaded version matches + idMapper().setFingerprint( i->uid(), etag ); i->setCustomProperty( "KCalResourceOpengroupware", "storagelocation" , remote ); // if it's already there, we uploaded or changed it @@ -376,5 +382,4 @@ void OpenGroupware::slotJobResult( KIO:: disableChangeNotification(); addIncidence( i ); - kdDebug(7000) << "Added incidence: " << i->uid() << endl; enableChangeNotification(); } --- kdepim/kresources/opengroupware/kcal_resourceopengroupware.h #1.7:1.8 @@ -112,6 +112,4 @@ class OpenGroupware : public ResourceCac QStringList mIncidencesForDeletion; - QMap mVersionsPendingDownload; - QString mCurrentGetUrl;