Chatterino
NetworkRequest.hpp
Go to the documentation of this file.
1 #pragma once
2 
5 
6 #include <QHttpMultiPart>
7 #include <memory>
8 
9 namespace chatterino {
10 
11 struct NetworkData;
12 
13 class NetworkRequest final
14 {
15  // Stores all data about the request that needs to be passed around to each
16  // part of the request
17  std::shared_ptr<NetworkData> data;
18 
19  // The NetworkRequest destructor will assert if executed_ hasn't been set to
20  // true before dying
21  bool executed_ = false;
22 
23 public:
24  explicit NetworkRequest(
25  const std::string &url,
27  explicit NetworkRequest(
28  QUrl url, NetworkRequestType requestType = NetworkRequestType::Get);
29 
30  // Enable move
31  NetworkRequest(NetworkRequest &&other) = default;
32  NetworkRequest &operator=(NetworkRequest &&other) = default;
33 
34  // Disable copy
35  NetworkRequest(const NetworkRequest &other) = delete;
36  NetworkRequest &operator=(const NetworkRequest &other) = delete;
37 
39 
40  NetworkRequest type(NetworkRequestType newRequestType) &&;
41 
46 
47  NetworkRequest payload(const QByteArray &payload) &&;
48  NetworkRequest cache() &&;
53  NetworkRequest caller(const QObject *caller) &&;
54  NetworkRequest header(const char *headerName, const char *value) &&;
55  NetworkRequest header(const char *headerName, const QByteArray &value) &&;
56  NetworkRequest header(const char *headerName, const QString &value) &&;
58  const std::vector<std::pair<QByteArray, QByteArray>> &headers) &&;
59  NetworkRequest timeout(int ms) &&;
61  NetworkRequest authorizeTwitchV5(const QString &clientID,
62  const QString &oauthToken = QString()) &&;
63  NetworkRequest multiPart(QHttpMultiPart *payload) &&;
64 
65  void execute();
66 
67  static NetworkRequest twitchRequest(QUrl url);
68 
69 private:
70  void initializeDefaultValues();
71 };
72 
73 } // namespace chatterino
NetworkRequest header(const char *headerName, const char *value) &&
Definition: NetworkRequest.cpp:88
Definition: NetworkRequest.hpp:13
NetworkRequest timeout(int ms) &&
Definition: NetworkRequest.cpp:119
NetworkRequest & operator=(NetworkRequest &&other)=default
NetworkRequest authorizeTwitchV5(const QString &clientID, const QString &oauthToken=QString()) &&
Definition: NetworkRequest.cpp:132
NetworkRequest onError(NetworkErrorCallback cb) &&
Definition: NetworkRequest.cpp:70
Definition: Application.cpp:48
NetworkRequest cache() &&
Definition: NetworkRequest.cpp:159
std::function< void(NetworkResult)> NetworkErrorCallback
Definition: NetworkCommon.hpp:16
NetworkRequest(const std::string &url, NetworkRequestType requestType=NetworkRequestType::Get)
Definition: NetworkRequest.cpp:21
static NetworkRequest twitchRequest(QUrl url)
Definition: NetworkRequest.cpp:193
NetworkRequestType
Definition: NetworkCommon.hpp:20
NetworkRequest headerList(const std::vector< std::pair< QByteArray, QByteArray >> &headers) &&
Definition: NetworkRequest.cpp:109
NetworkRequest concurrent() &&
Definition: NetworkRequest.cpp:126
NetworkRequest multiPart(QHttpMultiPart *payload) &&
Definition: NetworkRequest.cpp:146
NetworkRequest onReplyCreated(NetworkReplyCreatedCallback cb) &&
Definition: NetworkRequest.cpp:64
NetworkRequest type(NetworkRequestType newRequestType) &&
Definition: NetworkRequest.cpp:45
NetworkRequest payload(const QByteArray &payload) &&
Definition: NetworkRequest.cpp:153
std::function< Outcome(NetworkResult)> NetworkSuccessCallback
Definition: NetworkCommon.hpp:15
~NetworkRequest()
Definition: NetworkRequest.cpp:40
NetworkRequest onSuccess(NetworkSuccessCallback cb) &&
Definition: NetworkRequest.cpp:76
std::function< void()> NetworkFinallyCallback
Definition: NetworkCommon.hpp:18
NetworkRequest caller(const QObject *caller) &&
Definition: NetworkRequest.cpp:51
void execute()
Definition: NetworkRequest.cpp:165
std::function< void(QNetworkReply *)> NetworkReplyCreatedCallback
Definition: NetworkCommon.hpp:17