Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2697782
kazv-io-manager.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
kazv-io-manager.cpp
View Options
/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2022 nannanko <nannanko@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include
"kazv-io-manager.hpp"
#include
"kazv-io-job.hpp"
#include
<api/csapi/content-repo.hpp>
#include
<file-desc.hpp>
#include
<QObject>
#include
<QIODevice>
#include
<QFile>
#include
<QSaveFile>
#include
<QPointer>
#include
<QSharedPointer>
#include
<QUrl>
#include
<QMap>
#include
<QMultiMap>
#include
<string>
struct
KazvIOManagerPrivate
{
QMap
<
QString
,
QSharedPointer
<
KazvIODownloadJob
>>
downloadJobs
;
QMultiMap
<
QString
,
QSharedPointer
<
KazvIOUploadJob
>>
uploadJobs
;
};
KazvIOManager
::
KazvIOManager
(
QObject
*
parent
)
:
QObject
(
parent
)
,
m_d
(
new
KazvIOManagerPrivate
)
{
}
KazvIOManager
::~
KazvIOManager
()
=
default
;
KazvIOBaseJob
*
KazvIOManager::startNewDownloadJob
(
const
QUrl
&
serverUrl
,
const
QUrl
&
localFileUrl
,
const
QString
&
jobId
)
{
auto
downloadJob
=
QSharedPointer
<
KazvIODownloadJob
>
(
new
KazvIODownloadJob
());
downloadJob
->
setJob
(
KIO
::
get
(
serverUrl
));
downloadJob
->
setFile
(
QSharedPointer
<
QSaveFile
>
(
new
QSaveFile
(
localFileUrl
.
path
())));
m_d
->
downloadJobs
[
jobId
]
=
downloadJob
;
return
downloadJob
.
data
();
}
KazvIOBaseJob
*
KazvIOManager::startNewUploadJob
(
const
QUrl
&
serverUrl
,
const
QUrl
&
localFileUrl
,
const
QString
&
token
,
const
QString
&
jobId
)
{
auto
uploadJob
=
QSharedPointer
<
KazvIOUploadJob
>
(
new
KazvIOUploadJob
());
uploadJob
->
setFile
(
QSharedPointer
<
QFile
>
(
new
QFile
(
localFileUrl
.
path
())));
auto
kazvUploadJob
=
Kazv
::
Api
::
UploadContentJob
(
serverUrl
.
toString
().
toStdString
(),
token
.
toStdString
(),
Kazv
::
FileDesc
(
std
::
string
()));
uploadJob
->
setJob
(
KIO
::
http_post
(
QString
(
kazvUploadJob
.
url
().
data
()),
uploadJob
->
file
().
data
()));
uploadJob
->
job
()
->
addMetaData
(
QString
(
"content-type"
)
,
QMimeDatabase
().
mimeTypeForFile
(
localFileUrl
.
path
()).
name
());
uploadJob
->
job
()
->
addMetaData
(
"customHTTPHeader"
,
QString
(
"Authorization: "
).
append
(
kazvUploadJob
.
requestHeader
()
->
at
(
"Authorization"
).
data
()));
uploadJob
->
job
()
->
addMetaData
(
"PropagateHttpHeader"
,
"true"
);
m_d
->
uploadJobs
.
insert
(
jobId
,
uploadJob
);
return
uploadJob
.
data
();
}
KazvIOBaseJob
*
KazvIOManager::getDownloadJob
(
const
QString
&
jobId
)
{
auto
targetJob
=
m_d
->
downloadJobs
.
find
(
jobId
);
if
(
targetJob
==
m_d
->
downloadJobs
.
end
())
{
return
nullptr
;
}
return
targetJob
.
value
().
data
();
}
void
KazvIOManager::deleteDownloadJob
(
const
QString
&
jobId
)
{
m_d
->
downloadJobs
.
remove
(
jobId
);
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Fri, Jul 18, 7:17 AM (15 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
261408
Default Alt Text
kazv-io-manager.cpp (2 KB)
Attached To
Mode
rK kazv
Attached
Detach File
Event Timeline
Log In to Comment