diff --git a/NzbDrone.Core.Test/SabControllerTest.cs b/NzbDrone.Core.Test/SabControllerTest.cs index fe061bb79..c094f882a 100644 --- a/NzbDrone.Core.Test/SabControllerTest.cs +++ b/NzbDrone.Core.Test/SabControllerTest.cs @@ -19,21 +19,61 @@ namespace NzbDrone.Core.Test public void AddByUrl() { //Setup - String key = "SabnzbdInfo"; - String value = "192.168.5.55:2222"; + string sabnzbdInfo = "192.168.5.55:2222"; + string apikey = "5c770e3197e4fe763423ee7c392c25d1"; + string username = "admin"; + string password = "pass"; + string priority = "0"; - var repo = new Mock(); var config = new Mock(); - config.Setup(c => c.SetValue("SabnzbdInfo", "192.168.5.55:2222")); + config.Setup(c => c.GetValue("SabnzbdInfo", String.Empty, false)).Returns(sabnzbdInfo); + config.Setup(c => c.GetValue("ApiKey", String.Empty, false)).Returns(apikey); + config.Setup(c => c.GetValue("Username", String.Empty, false)).Returns(username); + config.Setup(c => c.GetValue("Password", String.Empty, false)).Returns(password); + config.Setup(c => c.GetValue("Priority", String.Empty, false)).Returns(priority); - //var config = new Config() { Key = key, Value = value }; var target = new SabController(config.Object, new Mock().Object); + ItemInfo nzb = new ItemInfo(); + nzb.Link = new Uri("http://www.nzbclub.com/nzb_download.aspx?mid=1950232"); + nzb.Title = "This is an Nzb"; + //Act - bool result = target.AddByUrl("http://www.nzbclub.com/nzb_download.aspx?mid=1950232"); + bool result = target.AddByUrl(nzb); //Assert Assert.AreEqual(true, result); } + + [Test] + public void IsInQueue() + { + //Setup + string sabnzbdInfo = "192.168.5.55:2222"; + string apikey = "5c770e3197e4fe763423ee7c392c25d1"; + string username = "admin"; + string password = "pass"; + string priority = "0"; + + var config = new Mock(); + config.Setup(c => c.GetValue("SabnzbdInfo", String.Empty, false)).Returns(sabnzbdInfo); + config.Setup(c => c.GetValue("ApiKey", String.Empty, false)).Returns(apikey); + config.Setup(c => c.GetValue("Username", String.Empty, false)).Returns(username); + config.Setup(c => c.GetValue("Password", String.Empty, false)).Returns(password); + config.Setup(c => c.GetValue("Priority", String.Empty, false)).Returns(priority); + + var target = new SabController(config.Object, new Mock().Object); + + Episode episode = new Episode(); + FeedItem item = new FeedItem(); + item.TitleFix = "This is my fixed title"; + episode.FeedItem = item; + + //Act + bool result = target.IsInQueue(episode); + + //Assert + Assert.AreEqual(false, result); + } } } diff --git a/NzbDrone.Core/Controllers/SabController.cs b/NzbDrone.Core/Controllers/SabController.cs index ff36455e7..8dd42037e 100644 --- a/NzbDrone.Core/Controllers/SabController.cs +++ b/NzbDrone.Core/Controllers/SabController.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; +using System.Web; using log4net; using System.Xml.Linq; using System.Xml; @@ -28,7 +29,7 @@ namespace NzbDrone.Core.Controllers const string mode = "addurl"; const string cat = "tv"; string name = nzb.Link.ToString().Replace("&", "%26"); - string nzbName = CleanUrlString(nzb.Title); + string nzbName = HttpUtility.UrlEncode(nzb.Title); string action = string.Format("mode={0}&name={1}&cat={2}&nzbname={3}", mode, name, cat, nzbName); string request = GetSabRequest(action); @@ -45,7 +46,7 @@ namespace NzbDrone.Core.Controllers { string action = "mode=queue&output=xml"; - XDocument xDoc = XDocument.Load(action); + XDocument xDoc = XDocument.Load(GetSabRequest(action)); //If an Error Occurred, retuyrn if (xDoc.Descendants("error").Count() != 0) @@ -87,22 +88,5 @@ namespace NzbDrone.Core.Controllers _logger.DebugFormat("Queue Repsonse: [{0}]", response); return response; } - - private string CleanUrlString(string name) - { - string result = name; - string[] badCharacters = - { - "%", "<", ">", "#", "{", "}", "|", "\\", "^", "`", "[", "]", "`", ";", "/", "?", - ":", "@", "=", "&", "$" - }; - string[] goodCharacters = - { - "%25", "%3C", "%3E", "%23", "%7B", "%7D", "%7C", "%5C", "%5E", "%7E", "%5B", - "%5D", "%60", "%3B", "%2F", "%3F", "%3A", "%40", "%3D", "%26", "%24" - }; - - return result.Trim(); - } } } diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 57a52338c..6d3c4416b 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -141,6 +141,10 @@ + + + +