qTbot
0.2.123.6f57966
qTbot is base back end library for your c++ Qt projects.
Toggle main menu visibility
telegramsendfile.cpp
Go to the documentation of this file.
1
//#
2
//# Copyright (C) 2023-2026 QuasarApp.
3
//# Distributed under the GPLv3 software license, see the accompanying
4
//# Everyone is permitted to copy and distribute verbatim copies
5
//# of this license document, but changing it is not allowed.
6
//#
7
#include "
telegramsendfile.h
"
8
9
#include <QJsonDocument>
10
11
namespace
qTbot
{
12
13
14
qTbot::TelegramSendFile::TelegramSendFile
(
const
QString &
request
,
15
const
QString &fileName,
16
const
QString &fileType,
17
const
QByteArray& data,
18
const
TelegramArgs
&
args
,
19
const
ExtraJsonObjects
& extraObjects
20
):
21
TelegramSingleRquest
(
request
,
args
.toMap(true)) {
22
setPriority
(
args
.
requestPriority
);
23
24
25
for
(
auto
it = extraObjects.begin(); it != extraObjects.end(); it = std::next(it)) {
26
addArg
(it.key(), QJsonDocument(*it.value()).toJson(QJsonDocument::Compact));
27
}
28
29
addArg
(QString(
"%0:%1:%2"
).arg(
REQUEST_UPLOAD_FILE_KEY
, fileName, fileType), data);
30
}
31
32
qTbot::TelegramSendFile::TelegramSendFile
(
const
QString &
request
,
33
const
QFileInfo &file,
34
const
TelegramArgs
&
args
,
35
const
QHash<QString, QSharedPointer<QJsonObject> > &extraObjects):
36
TelegramSingleRquest
(
request
,
args
.toMap(true)) {
37
setPriority
(
args
.
requestPriority
);
38
39
QFile readFile(file.absoluteFilePath());
40
if
(!readFile.open(QIODevice::ReadOnly)) {
41
qWarning() <<
"Fail to open file"
<< file.absoluteFilePath();
42
}
43
44
for
(
auto
it = extraObjects.begin(); it != extraObjects.end(); it = std::next(it)) {
45
addArg
(it.key(), QJsonDocument(*it.value()).toJson(QJsonDocument::Compact));
46
}
47
48
auto
&& sufix = file.suffix();
49
if
(sufix.contains(
"png"
) || sufix.contains(
"jpg"
) || sufix.contains(
"jepg"
) || sufix.contains(
"gif"
)) {
50
addArg
(QString(
"%0:%1:%2"
).arg(
REQUEST_UPLOAD_FILE_KEY
, file.fileName(),
TELEGRAM_PHOTO
), readFile.readAll());
51
52
}
else
{
53
addArg
(QString(
"%0:%1:%2"
).arg(
REQUEST_UPLOAD_FILE_KEY
, file.fileName(),
TELEGRAM_DOCUMENT
), readFile.readAll());
54
55
}
56
57
readFile.close();
58
}
59
60
iRequest::RequestMethod
TelegramSendFile::method
()
const
{
61
return
iRequest::RequestMethod::Upload
;
62
}
63
64
QString
TelegramSendFile::type
()
const
{
65
return
REQUEST_UPLOAD_FILE_KEY
;
66
}
67
}
qTbot::TelegramSendFile::method
RequestMethod method() const override
method Returns the method of the request. The file upload requests always use the Upload method.
Definition
telegramsendfile.cpp:60
qTbot::TelegramSendFile::TelegramSendFile
TelegramSendFile(const QString &request, const QString &fileName, const QString &fileType, const QByteArray &data, const TelegramArgs &args, const QHash< QString, QSharedPointer< QJsonObject > > &extraObjects={})
TelegramSendFile prepares the send file request from a byte array.
Definition
telegramsendfile.cpp:14
qTbot::TelegramSendFile::type
virtual QString type() const
type Returns the file type. By default it is REQUEST_UPLOAD_FILE_KEY.
Definition
telegramsendfile.cpp:64
qTbot::TelegramSingleRquest::TelegramSingleRquest
TelegramSingleRquest(const QString &request, const QMap< QString, QVariant > &args)
TelegramSingleRquest This is the main constructor of the single requests.
Definition
telegramsinglerquest.cpp:17
qTbot::iRequest::RequestMethod
RequestMethod
RequestMethod This is the list of supported request types.
Definition
irequest.h:43
qTbot::iRequest::Upload
@ Upload
Upload this is a post request to upload big data to telegram.
Definition
irequest.h:55
qTbot::iRequest::args
const QMap< QString, QVariant > & args() const
args This method returns the the current list of arguments
Definition
irequest.cpp:30
qTbot::iRequest::request
const QString & request() const
request Returns the current request command.
Definition
irequest.cpp:102
qTbot::iRequest::addArg
void addArg(const QString &key, const QVariant &val)
addArg This method pushes a new argument to the arguments list
Definition
irequest.cpp:34
qTbot::iRequest::setPriority
void setPriority(RequestPriority newPriority)
setPriority This method sets a new priority for the request.
Definition
irequest.cpp:98
REQUEST_UPLOAD_FILE_KEY
#define REQUEST_UPLOAD_FILE_KEY
Definition
irequest.h:19
qTbot
Definition
telegramdeletemessage.cpp:8
qTbot::ExtraJsonObjects
QHash< QString, QSharedPointer< QJsonObject > > ExtraJsonObjects
ExtraJsonObjects hash map of the extra objects of the message.
Definition
irequest.h:26
qTbot::TelegramArgs
The TelegramArgs class is the base structure for all telegram message arguments.
Definition
telegramargs.h:21
qTbot::TelegramArgs::requestPriority
iRequest::RequestPriority requestPriority
requestPriority This is the priority of the request.
Definition
telegramargs.h:94
telegramsendfile.h
TELEGRAM_DOCUMENT
#define TELEGRAM_DOCUMENT
Definition
telegramsendfile.h:16
TELEGRAM_PHOTO
#define TELEGRAM_PHOTO
Definition
telegramsendfile.h:15
src
qTbot
src
private
requests
telegramsendfile.cpp
Generated by
1.18.0