diff options
Diffstat (limited to 'kresources/slox/sloxaccounts.cpp')
-rw-r--r-- | kresources/slox/sloxaccounts.cpp | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/kresources/slox/sloxaccounts.cpp b/kresources/slox/sloxaccounts.cpp deleted file mode 100644 index aa648d1bc..000000000 --- a/kresources/slox/sloxaccounts.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - Copyright (c) 2005 Volker Krause <volker.krause@rwth-aachen.de> - - 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. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "sloxaccounts.h" -#include "sloxbase.h" -#include "webdavhandler.h" - -#include <libkcal/freebusyurlstore.h> - -#include <kstaticdeleter.h> -#include <kdebug.h> -#include <kstandarddirs.h> -#include <kio/job.h> -#include <kio/davjob.h> -#include <kstringhandler.h> -#include <kconfig.h> - -#include <tqfile.h> -#include <tqdom.h> -#include <tqstring.h> - -SloxAccounts::SloxAccounts( SloxBase *res, const KURL &baseUrl ) - : mBaseUrl( baseUrl ), mRes( res ) -{ - kdDebug() << "SloxAccounts(): " << baseUrl << endl; - - mDownloadJob = 0; - - TQString server = mBaseUrl.host(); - - TQStringList l = TQStringList::split( '.', server ); - - if ( l.count() < 2 ) mDomain = server; - else mDomain = l[ l.count() - 2 ] + "." + l[ l.count() - 1 ]; - - readAccounts(); -} - -SloxAccounts::~SloxAccounts() -{ - kdDebug() << "~SloxAccounts()" << endl; - - if ( mDownloadJob ) mDownloadJob->kill(); -} - -void SloxAccounts::insertUser( const TQString &id, const KABC::Addressee &a ) -{ - kdDebug() << "SloxAccount::insertUser() " << id << endl; - - mUsers.replace( id, a ); - - TQString email = a.preferredEmail(); - - TQString url = "http://" + mBaseUrl.host() + "/servlet/webdav.freebusy?username="; - url += id + "&server=" + mDomain; - - KCal::FreeBusyUrlStore::self()->writeUrl( email, url ); -} - -KABC::Addressee SloxAccounts::lookupUser( const TQString &id ) -{ - TQMap<TQString, KABC::Addressee>::ConstIterator it; - it = mUsers.find( id ); - if ( it == mUsers.end() ) { - requestAccounts(); - return KABC::Addressee(); - } else { - return *it; - } -} - -TQString SloxAccounts::lookupId( const TQString &email ) -{ - kdDebug() << "SloxAccounts::lookupId() " << email << endl; - - TQMap<TQString, KABC::Addressee>::ConstIterator it; - for( it = mUsers.begin(); it != mUsers.end(); ++it ) { - kdDebug() << "PREF: " << (*it).preferredEmail() << endl; - kdDebug() << "KEY: " << it.key() << endl; - if ( (*it).preferredEmail() == email ) return it.key(); - } - requestAccounts(); - - int pos = email.find( '@' ); - if ( pos < 0 ) return email; - else return email.left( pos ); -} - -void SloxAccounts::requestAccounts() -{ - kdDebug() << "SloxAccounts::requestAccounts()" << endl; - - if ( mDownloadJob ) { - kdDebug() << "SloxAccount::requestAccounts(): Download still in progress" - << endl; - return; - } - - if ( mRes->resType() == "slox" ) { - KURL url = mBaseUrl; - url.addPath( "/servlet/webdav.groupuser" ); - url.setQuery( "?user=*&group=*&groupres=*&res=*&details=t" ); - - kdDebug() << "SloxAccounts::requestAccounts() URL: " << url << endl; - - mDownloadJob = TDEIO::file_copy( url, cacheFile(), -1, true, false, false ); - } else if ( mRes->resType() == "ox" ) { - KURL url = mBaseUrl; - url.setPath( "/servlet/webdav.groupuser/" ); - - TQDomDocument doc; - TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" ); - TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "user", "*" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "group", "*" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "resource", "*" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "resourcegroup", "*" ); - - kdDebug() << k_funcinfo << doc.toString( 2 ) << endl; - - mDownloadJob = TDEIO::davPropFind( url, doc, "0", false ); - } - - connect( mDownloadJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotResult( TDEIO::Job * ) ) ); -} - -void SloxAccounts::slotResult( TDEIO::Job *job ) -{ - kdDebug() << "SloxAccounts::slotResult()" << endl; - - if ( job->error() ) { - job->showErrorDialog( 0 ); - } else { - if ( mRes->resType() == "ox" ) { - TQFile f( cacheFile() ); - if ( !f.open( IO_WriteOnly ) ) { - kdWarning() << "Unable to open '" << cacheFile() << "'" << endl; - return; - } - TQTextStream stream ( &f ); - stream << static_cast<TDEIO::DavJob*>( mDownloadJob )->response(); - f.close(); - } - readAccounts(); - } - - mDownloadJob = 0; -} - -TQString SloxAccounts::cacheFile() const -{ - TQString host = mBaseUrl.host(); - - TQString file = locateLocal( "cache", "slox/accounts_" + host ); - - kdDebug() << "SloxAccounts::cacheFile(): " << file << endl; - - return file; -} - -void SloxAccounts::readAccounts() -{ - kdDebug() << "SloxAccounts::readAccounts()" << endl; - - TQFile f( cacheFile() ); - if ( !f.open( IO_ReadOnly ) ) { - kdDebug() << "Unable to open '" << cacheFile() << "'" << endl; - requestAccounts(); - return; - } - - TQDomDocument doc; - doc.setContent( &f ); - -// kdDebug() << "SLOX ACCOUNTS: " << doc.toString( 2 ) << endl; - - TQDomElement docElement = doc.documentElement(); - - mUsers.clear(); - - TQDomNodeList nodes = doc.elementsByTagName( mRes->resType() == "ox" ? "ox:user" : "user" ); - for( uint i = 0; i < nodes.count(); ++i ) { - TQDomElement element = nodes.item(i).toElement(); - TQString id; - KABC::Addressee a; - TQDomNode n; - for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e = n.toElement(); - TQString tag = e.tagName(); - // remove XML namespace - tag = tag.right( tag.length() - ( tag.find( ':' ) + 1 ) ); - TQString value = e.text(); - if ( tag == "uid" ) id = value; - else if ( tag == "mail" ) a.insertEmail( value, true ); - else if ( tag == "forename" ) a.setGivenName( value ); - else if ( tag == "surename" ) a.setFamilyName( value ); - } -// kdDebug() << "MAIL: " << a.preferredEmail() << endl; - insertUser( id, a ); - } -} - -#include "sloxaccounts.moc" |