summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/PluginUnavailable.hxx13
-rw-r--r--src/input/Init.cxx5
-rw-r--r--src/input/plugins/QobuzInputPlugin.cxx8
-rw-r--r--src/input/plugins/TidalInputPlugin.cxx6
4 files changed, 24 insertions, 8 deletions
diff --git a/src/PluginUnavailable.hxx b/src/PluginUnavailable.hxx
index 379bd87bf..a29361ad4 100644
--- a/src/PluginUnavailable.hxx
+++ b/src/PluginUnavailable.hxx
@@ -27,9 +27,20 @@
* that this plugin is unavailable. It will be disabled, and MPD can
* continue initialization.
*/
-class PluginUnavailable final : public std::runtime_error {
+class PluginUnavailable : public std::runtime_error {
public:
using std::runtime_error::runtime_error;
};
+/**
+ * Like #PluginUnavailable, but denotes that the plugin is not
+ * available because it was not explicitly enabled in the
+ * configuration. The message may describe the necessary steps to
+ * enable it.
+ */
+class PluginUnconfigured : public PluginUnavailable {
+public:
+ using PluginUnavailable::PluginUnavailable;
+};
+
#endif
diff --git a/src/input/Init.cxx b/src/input/Init.cxx
index 3b714bf5c..e944ff697 100644
--- a/src/input/Init.cxx
+++ b/src/input/Init.cxx
@@ -58,6 +58,11 @@ input_stream_global_init(const ConfigData &config, EventLoop &event_loop)
if (plugin->init != nullptr)
plugin->init(event_loop, *block);
input_plugins_enabled[i] = true;
+ } catch (const PluginUnconfigured &e) {
+ LogFormat(LogLevel::INFO, e,
+ "Input plugin '%s' is not configured",
+ plugin->name);
+ continue;
} catch (const PluginUnavailable &e) {
FormatError(e,
"Input plugin '%s' is unavailable",
diff --git a/src/input/plugins/QobuzInputPlugin.cxx b/src/input/plugins/QobuzInputPlugin.cxx
index 31f60cb24..372a38752 100644
--- a/src/input/plugins/QobuzInputPlugin.cxx
+++ b/src/input/plugins/QobuzInputPlugin.cxx
@@ -133,11 +133,11 @@ InitQobuzInput(EventLoop &event_loop, const ConfigBlock &block)
const char *app_id = block.GetBlockValue("app_id");
if (app_id == nullptr)
- throw PluginUnavailable("No Qobuz app_id configured");
+ throw PluginUnconfigured("No Qobuz app_id configured");
const char *app_secret = block.GetBlockValue("app_secret");
if (app_secret == nullptr)
- throw PluginUnavailable("No Qobuz app_secret configured");
+ throw PluginUnconfigured("No Qobuz app_secret configured");
const char *device_manufacturer_id = block.GetBlockValue("device_manufacturer_id",
"df691fdc-fa36-11e7-9718-635337d7df8f");
@@ -145,11 +145,11 @@ InitQobuzInput(EventLoop &event_loop, const ConfigBlock &block)
const char *username = block.GetBlockValue("username");
const char *email = block.GetBlockValue("email");
if (username == nullptr && email == nullptr)
- throw PluginUnavailable("No Qobuz username configured");
+ throw PluginUnconfigured("No Qobuz username configured");
const char *password = block.GetBlockValue("password");
if (password == nullptr)
- throw PluginUnavailable("No Qobuz password configured");
+ throw PluginUnconfigured("No Qobuz password configured");
const char *format_id = block.GetBlockValue("format_id", "5");
diff --git a/src/input/plugins/TidalInputPlugin.cxx b/src/input/plugins/TidalInputPlugin.cxx
index 3592262b2..426244af9 100644
--- a/src/input/plugins/TidalInputPlugin.cxx
+++ b/src/input/plugins/TidalInputPlugin.cxx
@@ -170,15 +170,15 @@ InitTidalInput(EventLoop &event_loop, const ConfigBlock &block)
const char *token = block.GetBlockValue("token");
if (token == nullptr)
- throw PluginUnavailable("No Tidal application token configured");
+ throw PluginUnconfigured("No Tidal application token configured");
const char *username = block.GetBlockValue("username");
if (username == nullptr)
- throw PluginUnavailable("No Tidal username configured");
+ throw PluginUnconfigured("No Tidal username configured");
const char *password = block.GetBlockValue("password");
if (password == nullptr)
- throw PluginUnavailable("No Tidal password configured");
+ throw PluginUnconfigured("No Tidal password configured");
FormatWarning(tidal_domain, "The Tidal input plugin is deprecated because Tidal has changed the protocol and doesn't share documentation");