You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
using FluentValidation.Results;
|
|
using NLog;
|
|
using NzbDrone.Common.Cache;
|
|
using NzbDrone.Core.Music;
|
|
using System;
|
|
|
|
namespace NzbDrone.Core.Notifications.Subsonic
|
|
{
|
|
public interface ISubsonicService
|
|
{
|
|
void Notify(SubsonicSettings settings, string message);
|
|
void Update(SubsonicSettings settings);
|
|
ValidationFailure Test(SubsonicSettings settings, string message);
|
|
}
|
|
|
|
public class SubsonicService : ISubsonicService
|
|
{
|
|
private readonly ISubsonicServerProxy _proxy;
|
|
private readonly Logger _logger;
|
|
|
|
public SubsonicService(ISubsonicServerProxy proxy,
|
|
Logger logger)
|
|
{
|
|
_proxy = proxy;
|
|
_logger = logger;
|
|
|
|
}
|
|
|
|
public void Notify(SubsonicSettings settings, string message)
|
|
{
|
|
_proxy.Notify(settings, message);
|
|
}
|
|
|
|
public void Update(SubsonicSettings settings)
|
|
{
|
|
_proxy.Update(settings);
|
|
}
|
|
|
|
private string GetVersion(SubsonicSettings settings)
|
|
{
|
|
var result = _proxy.Version(settings);
|
|
|
|
return result;
|
|
}
|
|
|
|
public ValidationFailure Test(SubsonicSettings settings, string message)
|
|
{
|
|
try
|
|
{
|
|
_logger.Debug("Determining version of Host: {0}", _proxy.GetBaseUrl(settings));
|
|
var version = GetVersion(settings);
|
|
_logger.Debug("Version is: {0}", version);
|
|
}
|
|
catch (SubsonicAuthenticationException ex)
|
|
{
|
|
_logger.Error(ex, "Unable to connect to Subsonic Server");
|
|
return new ValidationFailure("Username", "Incorrect username or password");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.Error(ex, "Unable to connect to Subsonic Server");
|
|
return new ValidationFailure("Host", "Unable to connect to Subsonic Server");
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|