RestLink 2.2.0
Powerfull Rest Client for Qt
Loading...
Searching...
No Matches
body.h
1#ifndef RESTLINK_BODY_H
2#define RESTLINK_BODY_H
3
4#include <RestLink/global.h>
5#include <RestLink/header.h>
6
7#include <QtCore/qstring.h>
8#include <QtCore/qbytearray.h>
9#include <QtCore/qjsonvalue.h>
10#include <QtCore/qshareddata.h>
11#include <QtCore/qmimedatabase.h>
12
13#define RESTLINK_MIME_PLAIN_TEXT "text/plain"
14#define RESTLINK_MIME_OCTET_STREAM "application/octet-stream"
15#define RESTLINK_MIME_JSON "application/json"
16
17class QHttpMultiPart;
18class QIODevice;
19class QFile;
20
21namespace RestLink {
22
23class File;
24
25class BodyData;
26class RESTLINK_EXPORT Body
27{
28public:
29 enum class Type {
30 PlainText,
31 JsonData,
32 RawData,
33 IODevice,
34 HttpMultiPart,
35
36 Unknown = -1,
37 };
38
39 Body();
40 Body(const char *data, int size = -1, const QByteArray &contentType = QByteArray());
41 Body(const QByteArray &data, const QByteArray &contentType = QByteArray());
42 Body(const QString &text, const QByteArray &contentType = QByteArray());
43 Body(const QJsonObject &object);
44 Body(const QJsonArray &array);
45 Body(const QJsonDocument &doc);
46 Body(const File &file);
47 Body(QFile *file);
48 Body(QIODevice *device, const QByteArray &contentType = QByteArray());
49 Body(QIODevice *device, qint64 size, const QByteArray &contentType = QByteArray());
50 Body(QHttpMultiPart *multiPart);
51 Body(const Body &other);
52 Body(Body &&other);
54
55 Body &operator=(const Body &other);
56 Body &operator=(Body &&other);
57
58 bool hasPlainText() const;
59 QByteArray toByteArray() const;
60 QString toString() const;
61
62 bool hasJsonObject() const;
63 QJsonObject jsonObject() const;
64
65 bool hasJsonArray() const;
66 QJsonArray jsonArray() const;
67
68 bool isDevice() const;
69 QIODevice *device() const;
70
71 bool isMultiPart() const;
72 QHttpMultiPart *multiPart() const;
73
74 QVariant object() const;
75 Type objectType() const;
76
77 QString contentType() const;
78 qint64 contentLength() const;
79
80 HeaderList headers() const;
81
82private:
83 Body(const QVariant &object, Type type, const QByteArray &contentType, qint64 contentLength);
84
85 QExplicitlySharedDataPointer<BodyData> d_ptr;
86
87 static QMimeDatabase s_mimeDatabase;
88};
89
90class RESTLINK_EXPORT File
91{
92public:
93 File(const char *fileName) : m_fileName(fileName) {}
94 File(const QString &fileName) : m_fileName(fileName) {}
95 File(const File &other) = default;
96
97 QFile *open() const;
98
99private:
100 QString m_fileName;
101};
102
103}
104
105#endif // RESTLINK_BODY_H