1 /* 2 SPDX-License-Identifier: BSD-2-Clause 3 */ 4 5 #pragma once 6 7 #include <QByteArray> 8 #include <QNetworkRequest> 9 #include <QObject> 10 11 #include "o2/o1.h" 12 13 class QNetworkAccessManager; 14 class QNetworkReply; 15 class O1; 16 17 /// Makes authenticated requests using OAuth 1.0. 18 class O1Requestor : public QObject 19 { 20 Q_OBJECT 21 22 public: 23 explicit O1Requestor(QNetworkAccessManager *manager, O1 *authenticator, QObject *parent = nullptr); 24 25 public Q_SLOTS: 26 /// Make a GET request. 27 /// @param req Network request. 28 /// @param signingParameters Extra (non-OAuth) parameters participating in signing. 29 /// @return Reply. 30 QNetworkReply *get(const QNetworkRequest &req, const QList<O0RequestParameter> &signingParameters); 31 32 /// Make a POST request. 33 /// @param req Network request. 34 /// @param signingParameters Extra (non-OAuth) parameters participating in signing. 35 /// @param data Request payload. 36 /// @return Reply. 37 QNetworkReply *post(const QNetworkRequest &req, const QList<O0RequestParameter> &signingParameters, const QByteArray &data); 38 39 /// Make a POST request. 40 /// @param req Network request. 41 /// @param signingParameters Extra (non-OAuth) parameters participating in signing. 42 /// @param multiPart HTTPMultiPart. 43 /// @return Reply. 44 QNetworkReply *post(const QNetworkRequest &req, const QList<O0RequestParameter> &signingParameters, QHttpMultiPart *multiPart); 45 46 /// Make a PUT request. 47 /// @param req Network request. 48 /// @param signingParameters Extra (non-OAuth) parameters participating in signing. 49 /// @param data Request payload. 50 /// @return Reply. 51 QNetworkReply *put(const QNetworkRequest &req, const QList<O0RequestParameter> &signingParameters, const QByteArray &data); 52 53 protected: 54 /// Return new request based on the original, with the "Authentication:" header added. 55 QNetworkRequest setup(const QNetworkRequest &request, const QList<O0RequestParameter> &signingParameters, QNetworkAccessManager::Operation operation); 56 57 /// Augment reply with a timer. 58 QNetworkReply *addTimer(QNetworkReply *reply); 59 60 QNetworkAccessManager *manager_ = nullptr; 61 O1 *authenticator_ = nullptr; 62 }; 63 64