Test buttons for Plex

New: Added buttons to test Plex configuration
This commit is contained in:
Mark McDowall 2012-10-21 21:29:12 -07:00
parent cacd86b4ef
commit 7065898165
4 changed files with 81 additions and 2 deletions

View File

@ -93,5 +93,15 @@ namespace NzbDrone.Core.Providers
return _httpProvider.DownloadString(url); return _httpProvider.DownloadString(url);
} }
public virtual void TestNotification(string hosts, string username, string password)
{
foreach (var host in hosts.Split(','))
{
logger.Trace("Sending Test Notifcation to XBMC Host: {0}", host);
var command = String.Format("ExecBuiltIn(Notification({0}, {1}))", "Test Notification", "Success! Notifications are setup correctly");
SendCommand(host.Trim(), command, _configProvider.PlexUsername, _configProvider.PlexPassword);
}
}
} }
} }

View File

@ -19,12 +19,13 @@ namespace NzbDrone.Web.Controllers
private readonly SeasonProvider _seasonProvider; private readonly SeasonProvider _seasonProvider;
private readonly ProwlProvider _prowlProvider; private readonly ProwlProvider _prowlProvider;
private readonly XbmcProvider _xbmcProvider; private readonly XbmcProvider _xbmcProvider;
private readonly PlexProvider _plexProvider;
public CommandController(JobProvider jobProvider, SabProvider sabProvider, public CommandController(JobProvider jobProvider, SabProvider sabProvider,
SmtpProvider smtpProvider, TwitterProvider twitterProvider, SmtpProvider smtpProvider, TwitterProvider twitterProvider,
EpisodeProvider episodeProvider, GrowlProvider growlProvider, EpisodeProvider episodeProvider, GrowlProvider growlProvider,
SeasonProvider seasonProvider, ProwlProvider prowlProvider, SeasonProvider seasonProvider, ProwlProvider prowlProvider,
XbmcProvider xbmcProvider) XbmcProvider xbmcProvider, PlexProvider plexProvider)
{ {
_jobProvider = jobProvider; _jobProvider = jobProvider;
_sabProvider = sabProvider; _sabProvider = sabProvider;
@ -35,6 +36,7 @@ namespace NzbDrone.Web.Controllers
_seasonProvider = seasonProvider; _seasonProvider = seasonProvider;
_prowlProvider = prowlProvider; _prowlProvider = prowlProvider;
_xbmcProvider = xbmcProvider; _xbmcProvider = xbmcProvider;
_plexProvider = plexProvider;
} }
public JsonResult RssSync() public JsonResult RssSync()
@ -173,7 +175,7 @@ namespace NzbDrone.Web.Controllers
try try
{ {
_xbmcProvider.TestNotification(hosts); _xbmcProvider.TestNotification(hosts);
return JsonNotificationResult.Info("Success!", "Test Notification Sent Successfully"); return JsonNotificationResult.Info("Success!", "Test Notification sent successfully");
} }
catch(Exception) catch(Exception)
{ {
@ -195,5 +197,33 @@ namespace NzbDrone.Web.Controllers
return JsonNotificationResult.Oops("Failed to test JSON API, please review your settings."); return JsonNotificationResult.Oops("Failed to test JSON API, please review your settings.");
} }
public JsonResult TestPlexNotification(string hosts, string username, string password)
{
try
{
_plexProvider.TestNotification(hosts, username, password);
return JsonNotificationResult.Info("Success!", "Test Notification sent successfully");
}
catch (Exception)
{
}
return JsonNotificationResult.Oops("Failed to send test notification, please review your settings.");
}
public JsonResult TestPlexServer(string host)
{
try
{
_plexProvider.GetSectionKeys(host);
return JsonNotificationResult.Info("Success!", "Successfully tested Server settings");
}
catch (Exception)
{
}
return JsonNotificationResult.Oops("Failed to connect to server, please review your settings.");
}
} }
} }

View File

@ -11,6 +11,8 @@ var testSabUrl = '../Command/TestSabnzbd';
var testEmailUrl = '../Command/TestEmail'; var testEmailUrl = '../Command/TestEmail';
var testXbmcNotificationUrl = '../Command/TestXbmcNotification'; var testXbmcNotificationUrl = '../Command/TestXbmcNotification';
var testXbmcJsonApiUrl = '../Command/TestXbmcJsonApi'; var testXbmcJsonApiUrl = '../Command/TestXbmcJsonApi';
var testPlexNotificationUrl = '../Command/TestPlexNotification';
var testPlexServerUrl = '../Command/TestPlexServer';
function createExamples() { function createExamples() {
createSingleEpisodeExample(); createSingleEpisodeExample();
@ -251,3 +253,30 @@ $(document).on('click', '#xbmc-test-jsonapi', function () {
}) })
}); });
}); });
//Plex
$(document).on('click', '#plex-test-notification', function () {
var hosts = $('#PlexsClientHosts').val();
var username = $('#PlexUsername').val();
var password = $('#PlexPassword').val();
$.ajax({
url: testPlexNotificationUrl,
data: jQuery.param({
hosts: hosts,
username: username,
password: password
})
});
});
$(document).on('click', '#plex-test-server', function () {
var host = $('#PlexServerHost').val();
$.ajax({
url: testPlexServerUrl,
data: jQuery.param({
host: host
})
});
});

View File

@ -47,4 +47,14 @@
<span class="small">@Html.DescriptionFor(m => m.PlexPassword)</span> <span class="small">@Html.DescriptionFor(m => m.PlexPassword)</span>
</label> </label>
@Html.TextBoxFor(m => m.PlexPassword, new { @class = "inputClass", type = "password" }) @Html.TextBoxFor(m => m.PlexPassword, new { @class = "inputClass", type = "password" })
<label class="labelClass">Test Notification
<span class="small">Sends a test notification to your Plex client(s)</span>
</label>
<input type="button" id="plex-test-notification" value="Test Notification" class="inputClass"/>
<label class="labelClass">Test Server
<span class="small">Test Plex server settings</span>
</label>
<input type="button" id="plex-test-server" value="Test Server" class="inputClass"/>
</div> </div>