ImagingTools Core SDK
CHttpDataUploader.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QPointer>
7#include <QtCore/QUrl>
8#include <QtCore/QIODevice>
9#include <QtCore/QVariantMap>
10
11// ACF includes
12#include <ibase/IProgressManager.h>
13
14
15namespace imtrest
16{
17
18
19class CHttpDataUploader: public QObject
20{
21 Q_OBJECT
22
23 Q_PROPERTY(qsizetype partMaxSize READ GetPartMaxSize WRITE SetPartMaxSize NOTIFY PartMaxSizeChanged)
24 Q_PROPERTY(QVariantMap additionalHeaders READ GetAdditionalHeaders WRITE SetAdditionalHeaders NOTIFY AdditionalHeadersChanged)
25 Q_PROPERTY(QUrl uploadUrl READ GetUploadUrl WRITE SetUploadUrl NOTIFY uploadUrlChanged FINAL)
26public:
27 explicit CHttpDataUploader(QObject* parentPtr = nullptr);
28
29 void SetDevice(QIODevice* devicePtr);
30 bool InitializeDeviceFromFile(const QString& filePath);
31 bool UploadFile(const QUrl& url = QUrl());
32
33 void SetProgressManager(ibase::IProgressManager* progressManager);
34
35
36 [[nodiscard]] qsizetype GetPartMaxSize() const;
37 void SetPartMaxSize(qsizetype partMaxSize);
38 [[nodiscard]] QVariantMap GetAdditionalHeaders() const;
39 void SetAdditionalHeaders(const QVariantMap& additionalHeaders);
40 [[nodiscard]] QUrl GetUploadUrl() const;
41 void SetUploadUrl(const QUrl& uploadUrl);
42
43Q_SIGNALS:
44 void PartMaxSizeChanged();
45 void AdditionalHeadersChanged();
46 void uploadUrlChanged();
47
48private:
49 QPointer<QIODevice> m_devicePtr;
50 qsizetype m_partMaxSize;
51 QVariantMap m_additionalHeaders;
52 QUrl m_uploadUrl;
53 ibase::IProgressManager* m_progressManager;
54};
55
56
57} // namespace imtrest
58
59