e8a15d396a
- Created kf6-attica recipe (minimal core library build providing KF6::Attica cmake target, needed by kf6-knewstuff). v6.10.0, QML/tests/examples disabled. - Added kf6-attica to redbear-full.toml config, integrate-redbear.sh symlink, and recipes/kde/ symlink. - Fixed kf6-knewstuff: removed stale find_package(KF6Attica) suppression; added kf6-attica as dependency. Now publishes to repo (core-only build produces empty package — upstream code structure yields no libs with QtQuick/widgets/tools off). - Cookbook topo-sort: changed cycle fallback from silent Ok(recipes) to Err(Recursion) — surfaces dependency graph bugs instead of hiding them. - Fixed stale QtNetwork comment: QtNetwork IS enabled in qtbase since 2026-04-29 (relibc DNS resolver hardened). - Verified: kf6-attica builds, kf6-knewstuff publishes to repo
115 lines
3.8 KiB
C++
115 lines
3.8 KiB
C++
/*
|
|
This file is part of KDE.
|
|
|
|
SPDX-FileCopyrightText: 2011 Laszlo Papp <djszapi@archlinux.us>
|
|
|
|
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
|
|
*/
|
|
|
|
#include "putjob.h"
|
|
|
|
#include <QDebug>
|
|
#include <QXmlStreamReader>
|
|
|
|
#include <QNetworkAccessManager>
|
|
|
|
#include "platformdependent_v2.h"
|
|
|
|
using namespace Attica;
|
|
|
|
PutJob::PutJob(PlatformDependent *internals, const QNetworkRequest &request, QIODevice *iodevice)
|
|
: BaseJob(internals)
|
|
, m_ioDevice(iodevice)
|
|
, m_request(request)
|
|
{
|
|
}
|
|
|
|
Attica::PutJob::PutJob(PlatformDependent *internals, const QNetworkRequest &request, const QByteArray &byteArray)
|
|
: BaseJob(internals)
|
|
, m_ioDevice(nullptr)
|
|
, m_byteArray(byteArray)
|
|
, m_request(request)
|
|
{
|
|
}
|
|
|
|
PutJob::PutJob(PlatformDependent *internals, const QNetworkRequest &request, const StringMap ¶meters)
|
|
: BaseJob(internals)
|
|
, m_ioDevice(nullptr)
|
|
, m_request(request)
|
|
{
|
|
// Create put data
|
|
int j = 0;
|
|
for (StringMap::const_iterator i = parameters.begin(); i != parameters.end(); ++i) {
|
|
if (j++ > 0) {
|
|
m_byteArray.append('&');
|
|
}
|
|
m_byteArray.append(QUrl::toPercentEncoding(i.key()));
|
|
m_byteArray.append('=');
|
|
m_byteArray.append(QUrl::toPercentEncoding(i.value()));
|
|
}
|
|
}
|
|
|
|
QNetworkReply *PutJob::executeRequest()
|
|
{
|
|
Attica::PlatformDependentV2 *platformDependentV2 = dynamic_cast<Attica::PlatformDependentV2 *>(internals());
|
|
if (!platformDependentV2) {
|
|
return nullptr;
|
|
}
|
|
|
|
if (m_ioDevice) {
|
|
return platformDependentV2->put(m_request, m_ioDevice);
|
|
} else {
|
|
return platformDependentV2->put(m_request, m_byteArray);
|
|
}
|
|
}
|
|
|
|
void PutJob::parse(const QString &xmlString)
|
|
{
|
|
// qCDebug(ATTICA) << "PutJob::parse" << xmlString;
|
|
QXmlStreamReader xml(xmlString);
|
|
Metadata data;
|
|
while (!xml.atEnd()) {
|
|
xml.readNext();
|
|
|
|
if (xml.isStartElement()) {
|
|
if (xml.name() == QLatin1String("meta")) {
|
|
while (!xml.atEnd()) {
|
|
xml.readNext();
|
|
if (xml.isEndElement() && xml.name() == QLatin1String("meta")) {
|
|
break;
|
|
} else if (xml.isStartElement()) {
|
|
if (xml.name() == QLatin1String("status")) {
|
|
data.setStatusString(xml.readElementText());
|
|
} else if (xml.name() == QLatin1String("statuscode")) {
|
|
data.setStatusCode(xml.readElementText().toInt());
|
|
} else if (xml.name() == QLatin1String("message")) {
|
|
data.setMessage(xml.readElementText());
|
|
} else if (xml.name() == QLatin1String("totalitems")) {
|
|
data.setTotalItems(xml.readElementText().toInt());
|
|
} else if (xml.name() == QLatin1String("itemsperpage")) {
|
|
data.setItemsPerPage(xml.readElementText().toInt());
|
|
}
|
|
}
|
|
}
|
|
} else if (xml.name() == QLatin1String("data")) {
|
|
while (!xml.atEnd()) {
|
|
xml.readNext();
|
|
if (xml.isEndElement() && xml.name() == QLatin1String("data")) {
|
|
break;
|
|
} else if (xml.isStartElement()) {
|
|
if (xml.name() == QLatin1String("projectid")) {
|
|
data.setResultingId(xml.readElementText());
|
|
}
|
|
if (xml.name() == QLatin1String("buildjobid")) {
|
|
data.setResultingId(xml.readElementText());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
setMetadata(data);
|
|
}
|
|
|
|
#include "moc_putjob.cpp"
|