mirror of
https://github.com/YACReader/yacreader
synced 2026-04-12 15:49:53 -04:00
Some checks failed
Build / Initialization (push) Has been cancelled
Build / Code Format Validation (push) Has been cancelled
Build / Linux (Qt6) (push) Has been cancelled
Build / Linux (Qt6 + 7zip) (push) Has been cancelled
Build / macOS (Qt6 Universal) (push) Has been cancelled
Build / Windows x64 (Qt6) (push) Has been cancelled
Build / Windows ARM64 (Qt6) (push) Has been cancelled
Build / Docker amd64 Image (push) Has been cancelled
Build / Docker arm64 Image (push) Has been cancelled
Build / Publish Dev Builds (push) Has been cancelled
Build / Publish Release (push) Has been cancelled
Build / Publish YACReader10 Pre-release Builds (push) Has been cancelled
91 lines
2.0 KiB
C++
91 lines
2.0 KiB
C++
#include "response_parser.h"
|
|
|
|
#include <QDebug>
|
|
#include <QJsonDocument>
|
|
#include <QJsonParseError>
|
|
#include <QVariantMap>
|
|
|
|
ResponseParser::ResponseParser(QObject *parent)
|
|
: QObject(parent), error(false), errorTxt("None"), numResults(-1), currentPage(-1), totalPages(-1)
|
|
{
|
|
}
|
|
|
|
bool ResponseParser::responseError()
|
|
{
|
|
return error;
|
|
}
|
|
|
|
QString ResponseParser::errorDescription()
|
|
{
|
|
return errorTxt;
|
|
}
|
|
|
|
qint32 ResponseParser::getNumResults()
|
|
{
|
|
return numResults;
|
|
}
|
|
|
|
qint32 ResponseParser::getCurrentPage()
|
|
{
|
|
return currentPage;
|
|
}
|
|
|
|
qint32 ResponseParser::getTotalPages()
|
|
{
|
|
return totalPages;
|
|
}
|
|
|
|
bool ResponseParser::isError(qint32 error)
|
|
{
|
|
switch (error) {
|
|
case 100:
|
|
return true;
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
void ResponseParser::loadJSONResponse(const QString &response)
|
|
{
|
|
QJsonParseError Err;
|
|
QVariantMap sc = QJsonDocument::fromJson(response.toUtf8(), &Err).toVariant().toMap();
|
|
|
|
errorTxt = "None";
|
|
|
|
if (Err.error != QJsonParseError::NoError) {
|
|
errorTxt = "Json syntax error";
|
|
error = true;
|
|
return;
|
|
}
|
|
|
|
if (!sc.value("status_code").isValid() || isError(sc.value("status_code").toInt())) {
|
|
error = true;
|
|
if (sc.value("error").isValid()) {
|
|
errorTxt = sc.value("error").toString();
|
|
|
|
} else {
|
|
errorTxt = "Unknown error";
|
|
}
|
|
return;
|
|
}
|
|
|
|
error = false;
|
|
if (sc.value("number_of_total_results").isValid()) {
|
|
numResults = sc.value("number_of_total_results").toInt(); // sc.property("number_of_total_results").toInt32();
|
|
|
|
} else {
|
|
qDebug() << sc.value("oops").toString();
|
|
}
|
|
|
|
auto limit = sc.value("limit").toInt();
|
|
auto offset = sc.value("offset").toInt();
|
|
auto total = sc.value("number_of_total_results").toInt();
|
|
if (limit > 0) {
|
|
totalPages = (total / limit) + (total % limit > 0 ? 1 : 0);
|
|
currentPage = (offset / limit) + 1;
|
|
} else {
|
|
totalPages = currentPage = 1;
|
|
}
|
|
}
|