Test buttons for Plex

New: Added buttons to test Plex configuration
pull/4/head
Mark McDowall 12 years ago
parent cacd86b4ef
commit 7065898165

@ -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);
}
}
} }
} }

@ -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.");
}
} }
} }

@ -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();
@ -250,4 +252,31 @@ $(document).on('click', '#xbmc-test-jsonapi', function () {
password: password password: password
}) })
}); });
});
//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
})
});
}); });

@ -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>
Loading…
Cancel
Save