// qabstractoauth.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2019 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QAbstractOAuth : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractOAuth, &sipType_QAbstractOAuth, 2, 1}, {sipName_QAbstractOAuthReplyHandler, &sipType_QAbstractOAuthReplyHandler, 5, -1}, {sipName_QAbstractOAuth2, &sipType_QAbstractOAuth2, 4, 3}, {sipName_QOAuth1, &sipType_QOAuth1, -1, -1}, {sipName_QOAuth2AuthorizationCodeFlow, &sipType_QOAuth2AuthorizationCodeFlow, -1, -1}, {sipName_QOAuthOobReplyHandler, &sipType_QOAuthOobReplyHandler, 6, -1}, {sipName_QOAuthHttpServerReplyHandler, &sipType_QOAuthHttpServerReplyHandler, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum class Status { NotAuthenticated, TemporaryCredentialsReceived, Granted, RefreshingToken, }; enum class Stage { RequestingTemporaryCredentials, RequestingAuthorization, RequestingAccessToken, RefreshingAccessToken, }; enum class Error { NoError, NetworkError, ServerError, OAuthTokenNotFoundError, OAuthTokenSecretNotFoundError, OAuthCallbackNotVerified, }; enum class ContentType { WwwFormUrlEncoded, Json, }; virtual ~QAbstractOAuth(); QString clientIdentifier() const; void setClientIdentifier(const QString &clientIdentifier); QString token() const; void setToken(const QString &token); QNetworkAccessManager *networkAccessManager() const; void setNetworkAccessManager(QNetworkAccessManager *networkAccessManager /KeepReference/); QAbstractOAuth::Status status() const; QUrl authorizationUrl() const; void setAuthorizationUrl(const QUrl &url); QVariantMap extraTokens() const; QAbstractOAuthReplyHandler *replyHandler() const; void setReplyHandler(QAbstractOAuthReplyHandler *handler /KeepReference/); virtual QNetworkReply *head(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *get(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *post(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *put(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *deleteResource(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; SIP_PYCALLABLE modifyParametersFunction() const; %MethodCode // The callable, if any, is held in the user object. sipRes = sipGetUserObject((sipSimpleWrapper *)sipSelf); Py_XINCREF(sipRes); %End void setModifyParametersFunction(SIP_PYCALLABLE modifyParametersFunction /AllowNone/); %MethodCode // Remove any existing callable. PyObject *func = sipGetUserObject((sipSimpleWrapper *)sipSelf); Py_XDECREF(func); // Save the new callable. if (a0 == Py_None) { func = 0; } else { func = a0; Py_INCREF(func); } sipSetUserObject((sipSimpleWrapper *)sipSelf, func); Py_BEGIN_ALLOW_THREADS sipCpp->setModifyParametersFunction([func](QAbstractOAuth::Stage stage, QVariantMap *parameters) { if (func) { SIP_BLOCK_THREADS static const sipTypeDef *variant_map = 0; if (!variant_map) { variant_map = sipFindType("QMap"); Q_ASSERT(variant_map); } PyObject *parameters_obj = sipConvertFromType(parameters, variant_map, NULL); if (!parameters_obj) { pyqt5_qtnetworkauth_err_print(); } else { PyObject *res = sipCallMethod(NULL, func, "FR", stage, sipType_QAbstractOAuth_Stage, parameters_obj); if (!res) { pyqt5_qtnetworkauth_err_print(); } else { Py_DECREF(res); int iserr = 0; QVariantMap *updated = reinterpret_cast(sipForceConvertToType(parameters_obj, variant_map, NULL, SIP_NO_CONVERTORS, NULL, &iserr)); if (iserr) { pyqt5_qtnetworkauth_err_print(); } else { // Copy the updated parameters. *parameters = *updated; delete updated; } } Py_DECREF(parameters_obj); } SIP_UNBLOCK_THREADS } }); Py_END_ALLOW_THREADS %End QAbstractOAuth::ContentType contentType() const; void setContentType(QAbstractOAuth::ContentType contentType); public slots: virtual void grant() = 0; signals: void clientIdentifierChanged(const QString &clientIdentifier); void tokenChanged(const QString &token); void statusChanged(QAbstractOAuth::Status status /ScopesStripped=1/); void authorizationUrlChanged(const QUrl &url); void extraTokensChanged(const QVariantMap &tokens); void contentTypeChanged(QAbstractOAuth::ContentType contentType /ScopesStripped=1/); void requestFailed(const QAbstractOAuth::Error error /ScopesStripped=1/); void authorizeWithBrowser(const QUrl &url); void granted(); void finished(QNetworkReply *reply); void replyDataReceived(const QByteArray &data); protected: void setStatus(QAbstractOAuth::Status status); QString callback() const; virtual void resourceOwnerAuthorization(const QUrl &url, const QVariantMap ¶meters); static QByteArray generateRandomString(quint8 length); }; %End %ModuleHeaderCode // Imports from QtCore. typedef void (*pyqt5_qtnetworkauth_err_print_t)(); extern pyqt5_qtnetworkauth_err_print_t pyqt5_qtnetworkauth_err_print; %End %ModuleCode // Imports from QtCore. pyqt5_qtnetworkauth_err_print_t pyqt5_qtnetworkauth_err_print; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtnetworkauth_err_print = (pyqt5_qtnetworkauth_err_print_t)sipImportSymbol("pyqt5_err_print"); Q_ASSERT(pyqt5_qtnetworkauth_err_print); %End