RestLink 2.2.0
Powerfull Rest Client for Qt
Loading...
Searching...
No Matches
request.h
1#ifndef RESTLINK_REQUEST_H
2#define RESTLINK_REQUEST_H
3
4#include <RestLink/global.h>
5#include <RestLink/requestinterface.h>
6
7#include <QtCore/qshareddata.h>
8#include <QtCore/qmetatype.h>
9
10class QJsonObject;
11class QHttpHeaders;
12
13namespace RestLink {
14
15class Request;
16class Body;
17class Response;
18class Api;
19class AbstractController;
20
21typedef std::function<void(const Request &, const Body &, void *, Response *)> RequestProcessing;
22
23class RequestPrivate;
24class RESTLINK_EXPORT Request : public RequestInterface
25{
26public:
32
33 enum UrlType {
35 SecretUrl
36 };
37
38 Request();
39 Request(const char *endpoint);
40 Request(const QString &endpoint);
41 Request(const QUrl &url);
42 Request(const RequestProcessing &processing);
43 Request(const Request &other);
44 Request(Request &&other);
45 virtual ~Request();
46
47 Request &operator=(const Request &other);
48 Request &operator=(const Request &&other);
49
50 QString endpoint() const;
51 void setEndpoint(const QString &endpoint);
52
53 QUrl baseUrl() const;
54 void setBaseUrl(const QUrl &url);
55
56 QUrl url(UrlType type = SecretUrl) const;
57 QString urlPath() const;
58
59 QHttpHeaders httpHeaders() const;
60
61 QVariant attribute(Attribute attribute) const;
62 QVariant attribute(Attribute attribute, const QVariant &defaultValue) const;
63 void setAttribute(Attribute attribute, const QVariant &value);
64
65 RequestProcessing processing() const;
66 void setProcessing(RequestProcessing processing);
67
68 AbstractController *controller() const;
69 void setController(AbstractController *controller);
70
71 Api *api() const;
72 void setApi(Api *api);
73
74 QJsonObject toJsonObject() const;
75 static Request fromJsonbject(const QJsonObject &object);
76
77 void swap(Request &other);
78
79 static Request merge(const Request &r1, const Request &r2);
80
81protected:
82 Request(RequestPrivate *d);
83
84 QSharedDataPointer<RequestPrivate> d_ptr;
85
86private:
87 const QList<PathParameter> *constPathParameters() const override;
88 QList<PathParameter> *mutablePathParameters() override;
89 const QList<QueryParameter> *constQueryParameters() const override;
90 QList<QueryParameter> *mutableQueryParameters() override;
91 const QList<Header> *constHeaders() const override;
92 QList<Header> *mutableHeaders() override;
93
94 friend class ApiBase;
95 friend class Api;
96 friend class ServerRequest;
97};
98
99}
100
101Q_DECLARE_METATYPE(RestLink::Request)
102
103#endif // RESTLINK_REQUEST_H