This commit is contained in:
Martin Rotter 2021-01-28 20:33:32 +01:00
parent a9fe39df92
commit 2a1289e70a
4 changed files with 59 additions and 10 deletions

@ -1 +1 @@
Subproject commit 47f4125753452eff8800dbd6600c5a05540b15d9 Subproject commit 9c10723bfbaf6cb85107d6ee16e0324e9e487749

View File

@ -2,6 +2,9 @@
#include "services/greader/greadernetwork.h" #include "services/greader/greadernetwork.h"
#include "miscellaneous/application.h"
#include "network-web/networkfactory.h"
GreaderNetwork::GreaderNetwork(QObject* parent) GreaderNetwork::GreaderNetwork(QObject* parent)
: QObject(parent), m_service(GreaderServiceRoot::Service::FreshRss) {} : QObject(parent), m_service(GreaderServiceRoot::Service::FreshRss) {}
@ -9,8 +12,28 @@ QList<Message> GreaderNetwork::messages(ServiceRoot* root, const QString& stream
return {}; return {};
} }
NetworkResult GreaderNetwork::status(const QNetworkProxy& custom_proxy) const { QNetworkReply::NetworkError GreaderNetwork::clientLogin(const QNetworkProxy& proxy) {
return NetworkResult(QNetworkReply::NetworkError::NoError, {}); QString full_url = generateFullUrl(Operations::ClientLogin);
auto timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
QByteArray output;
auto network_result = NetworkFactory::performNetworkOperation(full_url,
timeout,
{},
output,
QNetworkAccessManager::Operation::GetOperation,
{},
false,
{},
{},
proxy);
if (network_result.first == QNetworkReply::NetworkError::NoError) {
// Save credentials.
auto lines = QString::fromUtf8(output).replace(QSL("\r"), QString()).split('\n');
int a = 5;
}
return network_result.first;
} }
GreaderServiceRoot::Service GreaderNetwork::service() const { GreaderServiceRoot::Service GreaderNetwork::service() const {
@ -68,3 +91,19 @@ int GreaderNetwork::batchSize() const {
void GreaderNetwork::setBatchSize(int batch_size) { void GreaderNetwork::setBatchSize(int batch_size) {
m_batchSize = batch_size; m_batchSize = batch_size;
} }
QString GreaderNetwork::sanitizedBaseUrl() const {
if (m_baseUrl.endsWith('/')) {
return m_baseUrl;
}
else {
return m_baseUrl + QL1C('/');
}
}
QString GreaderNetwork::generateFullUrl(GreaderNetwork::Operations operation) const {
switch (operation) {
case Operations::ClientLogin:
return sanitizedBaseUrl() + QSL("accounts/ClientLogin?Email=%1&Passwd=%2").arg(username(), password());
}
}

View File

@ -13,12 +13,17 @@ class GreaderNetwork : public QObject {
Q_OBJECT Q_OBJECT
public: public:
enum class Operations {
ClientLogin
};
explicit GreaderNetwork(QObject* parent = nullptr); explicit GreaderNetwork(QObject* parent = nullptr);
// Network operations. // Network operations.
QList<Message> messages(ServiceRoot* root, const QString& stream_id, Feed::Status& error); QList<Message> messages(ServiceRoot* root, const QString& stream_id, Feed::Status& error);
NetworkResult status(const QNetworkProxy& custom_proxy) const; // Performs client login, if successful, then saves SID, LSID and Auth.
QNetworkReply::NetworkError clientLogin(const QNetworkProxy& proxy);
// Metadata. // Metadata.
GreaderServiceRoot::Service service() const; GreaderServiceRoot::Service service() const;
@ -38,6 +43,10 @@ class GreaderNetwork : public QObject {
int batchSize() const; int batchSize() const;
void setBatchSize(int batch_size); void setBatchSize(int batch_size);
private:
QString sanitizedBaseUrl() const;
QString generateFullUrl(Operations operation) const;
private: private:
GreaderServiceRoot::Service m_service; GreaderServiceRoot::Service m_service;
QString m_username; QString m_username;

View File

@ -76,18 +76,19 @@ void GreaderAccountDetails::performTest(const QNetworkProxy& custom_proxy) {
factory.setUsername(m_ui.m_txtUsername->lineEdit()->text()); factory.setUsername(m_ui.m_txtUsername->lineEdit()->text());
factory.setPassword(m_ui.m_txtPassword->lineEdit()->text()); factory.setPassword(m_ui.m_txtPassword->lineEdit()->text());
factory.setBaseUrl(m_ui.m_txtUrl->lineEdit()->text()); factory.setBaseUrl(m_ui.m_txtUrl->lineEdit()->text());
factory.setService(service());
NetworkResult result = factory.status(custom_proxy); auto result = factory.clientLogin(custom_proxy);
if (result.first != QNetworkReply::NetworkError::NoError) { if (result != QNetworkReply::NetworkError::NoError) {
m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Error, m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Error,
tr("Network error: '%1'.").arg(NetworkFactory::networkErrorText(result.first)), tr("Network error: '%1'.").arg(NetworkFactory::networkErrorText(result)),
tr("Network error, have you entered correct Nextcloud endpoint and password?")); tr("Network error, have you entered correct Nextcloud endpoint and password?"));
} }
else { else {
m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Error, m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Ok,
tr("Unspecified error, did you enter correct URL?"), tr("You are good to go!"),
tr("Unspecified error, did you enter correct URL?")); tr("Yeah."));
} }
} }