00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00028 #ifndef QOAUTH_H
00029 #define QOAUTH_H
00030
00031 #include <QObject>
00032 #include <QMultiMap>
00033
00034 #include "qoauth_global.h"
00035
00036 class QOAuthPrivate;
00037
00038 class QOAUTH_EXPORT QOAuth : public QObject
00039 {
00040 Q_OBJECT
00041
00042 Q_PROPERTY( QByteArray consumerKey READ consumerKey WRITE setConsumerKey )
00043 Q_PROPERTY( QByteArray consumerSecret READ consumerSecret WRITE setConsumerSecret )
00044 Q_PROPERTY( uint requestTimeout READ requestTimeout WRITE setRequestTimeout )
00045 Q_PROPERTY( int error READ error )
00046
00047 public:
00048 enum SignatureMethod {
00049 HMAC_SHA1,
00050 RSA_SHA1,
00051 PLAINTEXT
00052 };
00053
00054 enum HttpMethod {
00055 GET,
00056 POST,
00057 HEAD,
00058 PUT,
00059 DELETE
00060 };
00061
00062 enum ParsingMode {
00063 ParseForInlineQuery,
00064 ParseForHeaderArguments,
00065 ParseForSignatureBaseString
00066 };
00067
00068 enum ErrorCode {
00069 NoError = 200,
00070 BadRequest = 400,
00071 Unauthorized = 401,
00072 Forbidden = 403,
00073 Timeout = 1,
00074 ConsumerKeyEmpty,
00075 ConsumerSecretEmpty,
00076 UnsupportedSignatureMethod,
00077 UnsupportedHttpMethod,
00078 OtherError
00079 };
00080
00081 typedef QMultiMap<QByteArray,QByteArray> ParamMap;
00082
00083 static const QByteArray OAuthVersion;
00084
00085 static const QByteArray ParamToken;
00086 static const QByteArray ParamTokenSecret;
00087
00088 QOAuth( QObject *parent = 0 );
00089 virtual ~QOAuth();
00090
00091 QByteArray consumerKey() const;
00092 void setConsumerKey( const QByteArray &consumerKey );
00093
00094 QByteArray consumerSecret() const;
00095 void setConsumerSecret( const QByteArray &consumerSecret );
00096
00097 uint requestTimeout() const;
00098 void setRequestTimeout( uint requestTimeout );
00099
00100 int error() const;
00101
00102 ParamMap requestToken( const QString &requestUrl, HttpMethod httpMethod,
00103 SignatureMethod signatureMethod = HMAC_SHA1, const ParamMap ¶ms = ParamMap() );
00104
00105 ParamMap accessToken( const QString &requestUrl, HttpMethod httpMethod, const QByteArray &token,
00106 const QByteArray &tokenSecret, SignatureMethod signatureMethod = HMAC_SHA1,
00107 const ParamMap ¶ms = ParamMap() );
00108
00109 QByteArray createParametersString( const QString &requestUrl, QOAuth::HttpMethod httpMethod, const QByteArray &token,
00110 const QByteArray &tokenSecret, QOAuth::SignatureMethod signatureMethod,
00111 const QOAuth::ParamMap ¶ms, QOAuth::ParsingMode mode );
00112
00113 QByteArray inlineParameters( const QOAuth::ParamMap ¶ms );
00114
00115 protected:
00116 QOAuthPrivate * const d_ptr;
00117
00118 private:
00119 Q_DECLARE_PRIVATE(QOAuth)
00120
00121 #ifdef UNIT_TEST
00122 friend class Ut_QOAuth;
00123 friend class Ft_QOAuth;
00124 #endif
00125 };
00126
00127 #endif // QOAUTH_H