From 2c8cde4d9151a598836bd88877f4070048934bac Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Tue, 18 Jun 2019 00:28:36 +0200 Subject: [PATCH] Add scheme setting for subsonic --- src/settings/subsonicsettingspage.cpp | 5 +++++ src/settings/subsonicsettingspage.ui | 6 +----- src/subsonic/subsonicbaserequest.cpp | 3 ++- src/subsonic/subsonicbaserequest.h | 1 + src/subsonic/subsonicservice.cpp | 4 +++- src/subsonic/subsonicservice.h | 2 ++ src/subsonic/subsonicurlhandler.cpp | 3 ++- src/subsonic/subsonicurlhandler.h | 1 + 8 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/settings/subsonicsettingspage.cpp b/src/settings/subsonicsettingspage.cpp index 9748fbb17..6bbfcc3cb 100644 --- a/src/settings/subsonicsettingspage.cpp +++ b/src/settings/subsonicsettingspage.cpp @@ -51,6 +51,9 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *parent) dialog()->installEventFilter(this); + ui_->scheme->addItem("HTTP", "http"); + ui_->scheme->addItem("HTTPS", "https"); + } SubsonicSettingsPage::~SubsonicSettingsPage() { delete ui_; } @@ -61,6 +64,7 @@ void SubsonicSettingsPage::Load() { s.beginGroup(kSettingsGroup); ui_->enable->setChecked(s.value("enabled", false).toBool()); + dialog()->ComboBoxLoadFromSettings(s, ui_->scheme, "scheme", "https"); ui_->hostname->setText(s.value("hostname").toString()); ui_->port->setText(QString::number(s.value("port", 4040).toInt())); ui_->username->setText(s.value("username").toString()); @@ -78,6 +82,7 @@ void SubsonicSettingsPage::Save() { QSettings s; s.beginGroup(kSettingsGroup); s.setValue("enabled", ui_->enable->isChecked()); + s.setValue("scheme", ui_->scheme->itemData(ui_->scheme->currentIndex())); s.setValue("hostname", ui_->hostname->text()); s.setValue("port", ui_->port->text().toInt()); s.setValue("username", ui_->username->text()); diff --git a/src/settings/subsonicsettingspage.ui b/src/settings/subsonicsettingspage.ui index 178d269fa..d99d2f4e9 100644 --- a/src/settings/subsonicsettingspage.ui +++ b/src/settings/subsonicsettingspage.ui @@ -37,11 +37,7 @@ - - - Hostname - - + diff --git a/src/subsonic/subsonicbaserequest.cpp b/src/subsonic/subsonicbaserequest.cpp index 53983a137..2a1c8b7dd 100644 --- a/src/subsonic/subsonicbaserequest.cpp +++ b/src/subsonic/subsonicbaserequest.cpp @@ -73,7 +73,8 @@ QUrl SubsonicBaseRequest::CreateUrl(const QString &ressource_name, const QList

0 && port() != 443) url.setPort(port()); diff --git a/src/subsonic/subsonicbaserequest.h b/src/subsonic/subsonicbaserequest.h index a169da036..ab21496db 100644 --- a/src/subsonic/subsonicbaserequest.h +++ b/src/subsonic/subsonicbaserequest.h @@ -68,6 +68,7 @@ class SubsonicBaseRequest : public QObject { QString client_name() { return service_->client_name(); } QString api_version() { return service_->api_version(); } + QString scheme() { return service_->scheme(); } QString hostname() { return service_->hostname(); } int port() { return service_->port(); } QString username() { return service_->username(); } diff --git a/src/subsonic/subsonicservice.cpp b/src/subsonic/subsonicservice.cpp index 6fad3cf45..e979ef4f0 100644 --- a/src/subsonic/subsonicservice.cpp +++ b/src/subsonic/subsonicservice.cpp @@ -105,6 +105,7 @@ void SubsonicService::ReloadSettings() { QSettings s; s.beginGroup(SubsonicSettingsPage::kSettingsGroup); + scheme_ = s.value("scheme", "https").toString(); hostname_ = s.value("hostname").toString(); port_ = s.value("port", 443).toInt(); username_ = s.value("username").toString(); @@ -142,7 +143,8 @@ void SubsonicService::SendPing(const QString &hostname, const int port, const QS } QUrl url; - url.setScheme("https"); + if (scheme_.isEmpty()) url.setScheme("https"); + else url.setScheme(scheme_); url.setHost(hostname); url.setPort(port); url.setPath("/rest/ping.view"); diff --git a/src/subsonic/subsonicservice.h b/src/subsonic/subsonicservice.h index a3f7ea337..8e41c3c55 100644 --- a/src/subsonic/subsonicservice.h +++ b/src/subsonic/subsonicservice.h @@ -63,6 +63,7 @@ class SubsonicService : public InternetService { QString client_name() { return kClientName; } QString api_version() { return kApiVersion; } + QString scheme() { return scheme_; } QString hostname() { return hostname_; } int port() { return port_; } QString username() { return username_; } @@ -118,6 +119,7 @@ class SubsonicService : public InternetService { std::shared_ptr songs_request_; + QString scheme_; QString hostname_; int port_; QString username_; diff --git a/src/subsonic/subsonicurlhandler.cpp b/src/subsonic/subsonicurlhandler.cpp index 909f6cb91..6dcfbaf73 100644 --- a/src/subsonic/subsonicurlhandler.cpp +++ b/src/subsonic/subsonicurlhandler.cpp @@ -45,7 +45,8 @@ UrlHandler::LoadResult SubsonicUrlHandler::StartLoading(const QUrl &url) { } QUrl media_url; - media_url.setScheme("https"); + if (server_scheme().isEmpty()) media_url.setScheme("https"); + else media_url.setScheme(server_scheme()); media_url.setHost(service_->hostname()); if (service_->port() > 0 && service_->port() != 443) media_url.setPort(service_->port()); diff --git a/src/subsonic/subsonicurlhandler.h b/src/subsonic/subsonicurlhandler.h index 1a907f2e0..bba7418c0 100644 --- a/src/subsonic/subsonicurlhandler.h +++ b/src/subsonic/subsonicurlhandler.h @@ -41,6 +41,7 @@ class SubsonicUrlHandler : public UrlHandler { SubsonicUrlHandler(Application *app, SubsonicService *service); QString scheme() const { return service_->url_scheme(); } + QString server_scheme() const { return service_->scheme(); } LoadResult StartLoading(const QUrl &url); private: