Blokkal
an Extendable KDE Blogging Client
SourceForge.net Logo

xmlrpcjob.h

00001 /***************************************************************************
00002  *   Copyright (C) 2007 - 2008 by Martin Mueller                           *
00003  *   orvio@orvio.de                                                        *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00019  ***************************************************************************/
00020 #ifndef BLOKKAL_IOXMLRPCJOB_H
00021 #define BLOKKAL_IOXMLRPCJOB_H
00022 
00023 #include "jobs.h"
00024 
00025 #include "../blokkal_export.h"
00026 
00027 class QDomElement;
00028 
00029 class KUrl;
00030 namespace KIO {
00031 class Job;
00032 }
00033 
00034 namespace Blokkal {
00035 
00036 namespace Io {
00037 
00045 class BLOKKAL_EXPORT XmlRpcJob : public Blokkal::Io::Job
00046 {
00047 Q_OBJECT
00048 public:
00060         XmlRpcJob( const KUrl & url,
00061                    const QString & methodName,
00062                    const QList<QVariant> & params,
00063                    unsigned int workArounds = 0,
00064                    bool showProgressInfo = FALSE );
00065 
00069         virtual ~XmlRpcJob( void );
00070 
00075         enum WorkArounds {
00076                 WordPressDateWorkAround = 0x01, 
00077         };
00078 
00084         const QVariant & response( void ) const;
00085 
00089         enum ResponseType {
00090                 ResponseSuccess = 1, 
00091                 ResponseFault = 2, 
00092                 ResponseError = 3, 
00093         };
00094 
00099         Blokkal::Io::XmlRpcJob::ResponseType responseType( void ) const;
00100 
00116         static void encodeData( QDomElement & containerElement,
00117                                 QVariant data,
00118                                 unsigned int workArounds = 0 );
00119 
00126         static QVariant decodeData( const QDomElement & valueElement );
00127 
00128 protected Q_SLOTS:
00135         virtual void slotDataArrived( KIO::Job *job, const QByteArray & data );
00136 
00137 protected:
00145         virtual void jobFinished( void );
00146         
00147 private:
00148         class Private;
00149         Private * const d;
00150 };
00151 
00152 }
00153 
00154 }
00155 
00156 #endif