Merge branch 'master' of git://github.com/kayone/NzbDrone

Conflicts:
	NzbDrone.Web/Views/AddSeries/AddSeriesItem.cshtml
This commit is contained in:
Mark McDowall 2011-04-07 17:00:42 -07:00
commit 6e221afe82
66 changed files with 19480 additions and 1705 deletions

View File

@ -1,32 +0,0 @@
Missing after HDD Failure....
ExternalNotiifcationProvider
- NotifyOnGrab, Download, Rename
XbmcProvider
- SendNotification
- Update
- Clean
Settings/Notications
NoticationSettingsModel
XBMC:
Enabled
Notify On: Grab, Download, Rename
Update On: Download, Rename
FullUpdate (If Required)
Clean On: Download, Rename
Show Image?
TimeToDisplay?
ServerHelper
- Get IP/Hostname
SyncProvider Changes
- Add by Root or Single Series
AddSeries
- Simlar to SB
- FileBrowserModel - Name, Path

View File

@ -0,0 +1,125 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using AutoMoq.Unity;
using Microsoft.Practices.Unity;
using Moq;
using Moq.Language.Flow;
namespace AutoMoq
{
public class AutoMoqer
{
private IUnityContainer container;
private IDictionary<Type, object> registeredMocks;
public AutoMoqer()
{
SetupAutoMoqer(new UnityContainer());
}
internal AutoMoqer(IUnityContainer container)
{
SetupAutoMoqer(container);
}
public virtual T Resolve<T>()
{
return container.Resolve<T>();
}
public virtual Mock<T> GetMock<T>() where T : class
{
var type = GetTheMockType<T>();
if (GetMockHasNotBeenCalledForThisType(type))
CreateANewMockAndRegisterIt<T>(type);
return TheRegisteredMockForThisType<T>(type);
}
public virtual void SetConstant<T>(T instance) where T : class
{
container.RegisterInstance(instance);
SetMock(instance.GetType(), null);
}
internal virtual void SetMock(Type type, Mock mock)
{
if (registeredMocks.ContainsKey(type) == false)
registeredMocks.Add(type, mock);
}
#region private methods
private void SetupAutoMoqer(IUnityContainer container)
{
this.container = container;
registeredMocks = new Dictionary<Type, object>();
AddTheAutoMockingContainerExtensionToTheContainer(container);
container.RegisterInstance(this);
}
private static void AddTheAutoMockingContainerExtensionToTheContainer(IUnityContainer container)
{
container.AddNewExtension<AutoMockingContainerExtension>();
return;
}
private Mock<T> TheRegisteredMockForThisType<T>(Type type) where T : class
{
return (Mock<T>)registeredMocks.Where(x => x.Key == type).First().Value;
}
private void CreateANewMockAndRegisterIt<T>(Type type) where T : class
{
var mock = new Mock<T>();
container.RegisterInstance(mock.Object);
SetMock(type, mock);
}
private bool GetMockHasNotBeenCalledForThisType(Type type)
{
return registeredMocks.ContainsKey(type) == false;
}
private static Type GetTheMockType<T>() where T : class
{
return typeof(T);
}
#endregion
public ISetup<T> Setup<T>(Expression<Action<T>> expression) where T : class
{
return GetMock<T>().Setup(expression);
}
public ISetup<T, TResult> Setup<T, TResult>(Expression<Func<T, TResult>> expression) where T : class
{
return GetMock<T>().Setup(expression);
}
public void Verify<T>(Expression<Action<T>> expression) where T : class
{
GetMock<T>().Verify(expression);
}
public void Verify<T>(Expression<Action<T>> expression, string failMessage) where T : class
{
GetMock<T>().Verify(expression, failMessage);
}
public void Verify<T>(Expression<Action<T>> expression, Times times) where T : class
{
GetMock<T>().Verify(expression, times);
}
public void Verify<T>(Expression<Action<T>> expression, Times times, string failMessage) where T : class
{
GetMock<T>().Verify(expression, times, failMessage);
}
}
}

View File

@ -0,0 +1,22 @@
 Copyright (c) 2010 Darren Cauthon
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Microsoft.Practices.ObjectBuilder2;
using Microsoft.Practices.Unity;
using Moq;
namespace AutoMoq.Unity
{
internal class AutoMockingBuilderStrategy : BuilderStrategy
{
private readonly MockFactory mockFactory;
private readonly IEnumerable<Type> registeredTypes;
private readonly IUnityContainer container;
public AutoMockingBuilderStrategy(IEnumerable<Type> registeredTypes, IUnityContainer container)
{
mockFactory = new MockFactory(MockBehavior.Loose);
this.registeredTypes = registeredTypes;
this.container = container;
}
public override void PreBuildUp(IBuilderContext context)
{
var autoMoqer = container.Resolve<AutoMoqer>();
var type = GetTheTypeFromTheBuilderContext(context);
if (AMockObjectShouldBeCreatedForThisType(type))
{
var mock = CreateAMockObject(type);
context.Existing = mock.Object;
autoMoqer.SetMock(type, mock);
}
}
#region private methods
private bool AMockObjectShouldBeCreatedForThisType(Type type)
{
return TypeIsNotRegistered(type) && type.IsInterface;
}
private static Type GetTheTypeFromTheBuilderContext(IBuilderContext context)
{
return ((NamedTypeBuildKey) context.OriginalBuildKey).Type;
}
private bool TypeIsNotRegistered(Type type)
{
return registeredTypes.Any(x => x.Equals(type)) == false;
}
private Mock CreateAMockObject(Type type)
{
var createMethod = GenerateAnInterfaceMockCreationMethod(type);
return InvokeTheMockCreationMethod(createMethod);
}
private Mock InvokeTheMockCreationMethod(MethodInfo createMethod)
{
return (Mock) createMethod.Invoke(mockFactory, new object[] {new List<object>().ToArray()});
}
private MethodInfo GenerateAnInterfaceMockCreationMethod(Type type)
{
var createMethodWithNoParameters = mockFactory.GetType().GetMethod("Create", EmptyArgumentList());
return createMethodWithNoParameters.MakeGenericMethod(new[] {type});
}
private static Type[] EmptyArgumentList()
{
return new[] {typeof (object[])};
}
#endregion
}
}

View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.ObjectBuilder;
namespace AutoMoq.Unity
{
internal class AutoMockingContainerExtension : UnityContainerExtension
{
private readonly IList<Type> registeredTypes = new List<Type>();
protected override void Initialize()
{
SetEventsOnContainerToTrackAllRegisteredTypes();
SetBuildingStrategyForBuildingUnregisteredTypes();
}
#region private methods
private void SetEventsOnContainerToTrackAllRegisteredTypes()
{
Context.Registering += ((sender, e) => RegisterType(e.TypeFrom));
Context.RegisteringInstance += ((sender, e) => RegisterType(e.RegisteredType));
}
private void RegisterType(Type typeToRegister)
{
registeredTypes.Add(typeToRegister);
}
private void SetBuildingStrategyForBuildingUnregisteredTypes()
{
var strategy = new AutoMockingBuilderStrategy(registeredTypes, Container);
Context.Strategies.Add(strategy, UnityBuildStage.PreCreation);
}
#endregion
}
}

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using AutoMoq;
using Gallio.Framework;
using MbUnit.Framework;
using MbUnit.Framework.ContractVerifiers;
@ -23,17 +24,20 @@ namespace NzbDrone.Core.Test
const string value = "MY_VALUE";
//Arrange
var repo = new Mock<IRepository>();
var config = new Config { Key = key, Value = value };
repo.Setup(r => r.Single<Config>(key)).Returns(config);
var target = new ConfigProvider(repo.Object);
var mocker = new AutoMoqer();
mocker.GetMock<IRepository>()
.Setup(r => r.Single<Config>(key))
.Returns(config);
//Act
target.SetValue(key, value);
mocker.Resolve<ConfigProvider>().SetValue(key, value);
//Assert
repo.Verify(c => c.Update(config));
repo.Verify(c => c.Add(It.IsAny<Config>()), Times.Never());
mocker.GetMock<IRepository>().Verify(c => c.Update(config));
mocker.GetMock<IRepository>().Verify(c => c.Add(It.IsAny<Config>()), Times.Never());
}
[Test]
@ -43,17 +47,20 @@ namespace NzbDrone.Core.Test
const string value = "MY_VALUE";
//Arrange
var repo = new Mock<IRepository>();
repo.Setup(r => r.Single<Config>(It.IsAny<string>())).Returns<Config>(null).Verifiable();
var target = new ConfigProvider(repo.Object);
var mocker = new AutoMoqer();
mocker.GetMock<IRepository>()
.Setup(r => r.Single<Config>(It.IsAny<string>()))
.Returns<Config>(null)
.Verifiable();
//Act
target.SetValue(key, value);
mocker.Resolve<ConfigProvider>().SetValue(key, value);
//Assert
repo.Verify();
repo.Verify(r => r.Update(It.IsAny<Config>()), Times.Never());
repo.Verify(r => r.Add(It.Is<Config>(c => c.Key == key && c.Value == value)), Times.Once());
mocker.GetMock<IRepository>().Verify();
mocker.GetMock<IRepository>().Verify(r => r.Update(It.IsAny<Config>()), Times.Never());
mocker.GetMock<IRepository>().Verify(r => r.Add(It.Is<Config>(c => c.Key == key && c.Value == value)), Times.Once());
}
}
}

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using AutoMoq;
using FizzWare.NBuilder;
using Gallio.Framework;
using MbUnit.Framework;
@ -27,8 +28,9 @@ namespace NzbDrone.Core.Test
public void RefreshEpisodeInfo()
{
//Arrange
int seriesId = 71663;
int episodeCount = 10;
const int seriesId = 71663;
const int episodeCount = 10;
var fakeEpisodes = Builder<TvdbSeries>.CreateNew().With(
c => c.Episodes =
new List<TvdbEpisode>(Builder<TvdbEpisode>.CreateListOfSize(episodeCount).
@ -37,23 +39,26 @@ namespace NzbDrone.Core.Test
.Build())
).With(c => c.Id = seriesId).Build();
var tvdbMock = new Mock<ITvDbProvider>();
tvdbMock.Setup(c => c.GetSeries(seriesId, true)).Returns(fakeEpisodes).Verifiable();
var mocker = new AutoMoqer();
mocker.SetConstant(MockLib.GetEmptyRepository());
mocker.GetMock<TvDbProvider>()
.Setup(c => c.GetSeries(seriesId, true))
.Returns(fakeEpisodes).Verifiable();
//mocker.GetMock<IRepository>().SetReturnsDefault();
var kernel = new MockingKernel();
kernel.Bind<IRepository>().ToConstant(MockLib.GetEmptyRepository(false)).InSingletonScope();
kernel.Bind<ITvDbProvider>().ToConstant(tvdbMock.Object);
kernel.Bind<IEpisodeProvider>().To<EpisodeProvider>().InSingletonScope();
//Act
var sw = Stopwatch.StartNew();
kernel.Get<IEpisodeProvider>().RefreshEpisodeInfo(seriesId);
mocker.Resolve<EpisodeProvider>().RefreshEpisodeInfo(seriesId);
var actualCount = mocker.Resolve<EpisodeProvider>().GetEpisodeBySeries(seriesId);
//Assert
tvdbMock.VerifyAll();
Assert.Count(episodeCount, kernel.Get<IEpisodeProvider>().GetEpisodeBySeries(seriesId));
Console.WriteLine("Duration: " + sw.Elapsed.ToString());
mocker.GetMock<TvDbProvider>().VerifyAll();
Assert.Count(episodeCount, actualCount);
Console.WriteLine("Duration: " + sw.Elapsed);
}
[Test]

View File

@ -0,0 +1,366 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="2.0" xmlns:report="http://www.newzbin.com/DTD/2007/feeds/report/">
<channel>
<title>TV - NZBs(dot)ORG RSS Feed</title>
<link>http://nzbs.org/index.php?&amp;catid=&amp;type=1</link>
<description>TV feed for NZBs(dot)ORG</description>
<language>en-us</language>
<item>
<title>Kings.S01E03.Prosperity.720p.HDTV.x264.PROPER-dH</title>
<pubDate>Tue, 05 Apr 2011 07:16:52 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605571</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605571&amp;filelist=1">922.1 MB</a><br /><b>Files:</b> 21 <small>(9 pars)</small><br /><b>Group:</b> a.b.multimedia<br /><b>.NFO:</b> None<br /><b>Posted:</b> Tue April 5th 05:08:26 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605571&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605571&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605571</guid>
<report:id>605571</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605571&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[&quot;giganews&quot; &lt;dan.haskell@gmail.com&gt;]]></report:poster>
<report:size type="bytes">966876952</report:size>
<report:postdate>Tue, 05 Apr 2011 05:08:26 +0000</report:postdate>
</item>
<item>
<title>Relapse.S01E01.David.and.Brooke.HDTV.XviD-MOMENTUM</title>
<pubDate>Tue, 05 Apr 2011 07:07:19 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605569</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605569&amp;filelist=1">396.9 MB</a><br /><b>Files:</b> 36 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605569&amp;nfo=1#nfo">View NFO</a><br /><b>Ext. Link:</b> <a href="http://www.aetv.com/relapse/">http://www.aetv.com/relapse/</a><br /><b>Posted:</b> Tue April 5th 05:05:21 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605569&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605569&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605569</guid>
<report:id>605569</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605569&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">416155248</report:size>
<report:postdate>Tue, 05 Apr 2011 05:05:21 +0000</report:postdate>
<report:moreinfo>http://www.aetv.com/relapse/</report:moreinfo>
</item>
<item>
<title>WWE.Monday.Night.Raw.2011.04.04.HDTV.XviD-W4F</title>
<pubDate>Tue, 05 Apr 2011 07:07:15 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605566</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605566&amp;filelist=1">1.27 GB</a><br /><b>Files:</b> 41 <small>(13 pars)</small><br /><b>Group:</b> a.b.multimedia<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605566&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 05:00:31 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605566&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605566&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605566</guid>
<report:id>605566</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605566&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.tv (teevee)]]></report:poster>
<report:size type="bytes">1363050400</report:size>
<report:postdate>Tue, 05 Apr 2011 05:00:31 +0000</report:postdate>
</item>
<item>
<title>Endgame.S01E04.HDTV.XviD-2HD</title>
<pubDate>Tue, 05 Apr 2011 07:07:14 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605565</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605565&amp;filelist=1">415.7 MB</a><br /><b>Files:</b> 34 <small>(10 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605565&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 04:59:21 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605565&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605565&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605565</guid>
<report:id>605565</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605565&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">435883204</report:size>
<report:postdate>Tue, 05 Apr 2011 04:59:21 +0000</report:postdate>
</item>
<item>
<title>NCAA.Basketball.2011.Tournament.Championship.Butler.vs.UConn.HDTV.XviD-FQM</title>
<pubDate>Tue, 05 Apr 2011 07:07:12 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605564</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605564&amp;filelist=1">1.26 GB</a><br /><b>Files:</b> 76 <small>(13 pars)</small><br /><b>Group:</b> a.b.multimedia<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605564&amp;nfo=1#nfo">View NFO</a><br /><b>Ext. Link:</b> <a href="http://www.ncaa.com/">http://www.ncaa.com/</a><br /><b>Posted:</b> Tue April 5th 04:57:22 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605564&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605564&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605564</guid>
<report:id>605564</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605564&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.tv (teevee)]]></report:poster>
<report:size type="bytes">1349676970</report:size>
<report:postdate>Tue, 05 Apr 2011 04:57:22 +0000</report:postdate>
<report:moreinfo>http://www.ncaa.com/</report:moreinfo>
</item>
<item>
<title>WWE.Hall.of.Fame.Induction.Ceremony.2011.720p.HDTV.x264-KYR</title>
<pubDate>Tue, 05 Apr 2011 06:47:51 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605553</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605553&amp;filelist=1">1.27 GB</a><br /><b>Files:</b> 43 <small>(14 pars)</small><br /><b>Group:</b> a.b.multimedia<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605553&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 04:45:59 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605553&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605553&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605553</guid>
<report:id>605553</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605553&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.tv (teevee)]]></report:poster>
<report:size type="bytes">1365699871</report:size>
<report:postdate>Tue, 05 Apr 2011 04:45:59 +0000</report:postdate>
</item>
<item>
<title>Inside.the.Vault.S01E09.HDTV.XviD-MOMENTUM</title>
<pubDate>Tue, 05 Apr 2011 06:47:49 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605552</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605552&amp;filelist=1">197.7 MB</a><br /><b>Files:</b> 23 <small>(6 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605552&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 04:42:36 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605552&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605552&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605552</guid>
<report:id>605552</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605552&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">207259060</report:size>
<report:postdate>Tue, 05 Apr 2011 04:42:36 +0000</report:postdate>
</item>
<item>
<title>American.Pickers.S03E03.Franks.Big.Shot.HDTV.XviD-MOMENTUM</title>
<pubDate>Tue, 05 Apr 2011 06:38:23 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605551</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605551&amp;filelist=1">395.8 MB</a><br /><b>Files:</b> 36 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605551&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 04:37:39 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605551&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605551&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605551</guid>
<report:id>605551</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605551&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">414999248</report:size>
<report:postdate>Tue, 05 Apr 2011 04:37:39 +0000</report:postdate>
</item>
<item>
<title>The.Colbert.Report.2011.04.04.Andrew.Chaikin.HDTV.XviD-FQM</title>
<pubDate>Tue, 05 Apr 2011 06:10:21 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605538</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605538&amp;filelist=1">198.9 MB</a><br /><b>Files:</b> 20 <small>(6 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605538&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 04:09:27 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605538&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605538&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605538</guid>
<report:id>605538</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605538&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">208534960</report:size>
<report:postdate>Tue, 05 Apr 2011 04:09:27 +0000</report:postdate>
</item>
<item>
<title>Pawn.Stars.S03E44.Pablo.Pawncasso.HDTV.XviD-MOMENTUM</title>
<pubDate>Tue, 05 Apr 2011 06:10:15 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605537</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605537&amp;filelist=1">198.5 MB</a><br /><b>Files:</b> 23 <small>(6 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605537&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 04:02:34 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605537&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605537&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605537</guid>
<report:id>605537</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605537&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">208139732</report:size>
<report:postdate>Tue, 05 Apr 2011 04:02:34 +0000</report:postdate>
</item>
<item>
<title>The.Kennedys.Part.1.and.Part.2.DSR.XviD-SYS</title>
<pubDate>Tue, 05 Apr 2011 06:10:06 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605536</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605536&amp;filelist=1">792.6 MB</a><br /><b>Files:</b> 61 <small>(8 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605536&amp;nfo=1#nfo">View NFO</a><br /><b>Ext. Link:</b> <a href="http://www.reelzchannel.com/kennedys/">http://www.reelzchannel.com/kennedys/</a><br /><b>Posted:</b> Tue April 5th 04:02:00 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605536&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605536&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605536</guid>
<report:id>605536</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605536&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">831055164</report:size>
<report:postdate>Tue, 05 Apr 2011 04:02:00 +0000</report:postdate>
<report:moreinfo>http://www.reelzchannel.com/kennedys/</report:moreinfo>
</item>
<item>
<title>Nurse.Jackie.S03E02.720p.HDTV.x264-ORENJI</title>
<pubDate>Tue, 05 Apr 2011 06:00:44 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605535</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605535&amp;filelist=1">849.3 MB</a><br /><b>Files:</b> 26 <small>(6 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605535&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:58:06 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605535&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605535&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605535</guid>
<report:id>605535</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605535&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">890553088</report:size>
<report:postdate>Tue, 05 Apr 2011 03:58:06 +0000</report:postdate>
</item>
<item>
<title>The Killing S01E01-02 1080i HDTV DD5.1 MPEG2-TrollHD</title>
<pubDate>Tue, 05 Apr 2011 06:00:43 +0000</pubDate>
<category>TV-Other</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605534</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=27">TV-Other</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605534&amp;filelist=1">6.77 GB</a><br /><b>Files:</b> 77 <small>(12 pars)</small><br /><b>Group:</b> a.b.hdtv<br /><b>.NFO:</b> None<br /><b>Posted:</b> Tue April 5th 03:50:44 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605534&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605534&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605534</guid>
<report:id>605534</report:id>
<report:category parentID="1" id="27">TV-Other</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605534&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[Yenc@power-post.org (Yenc-PP-A&amp;A)]]></report:poster>
<report:size type="bytes">7271142303</report:size>
<report:postdate>Tue, 05 Apr 2011 03:50:44 +0000</report:postdate>
</item>
<item>
<title>Pawn.Stars.S03E43.Evel.Genius.HDTV.XviD-MOMENTUM</title>
<pubDate>Tue, 05 Apr 2011 05:51:18 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605533</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605533&amp;filelist=1">206.3 MB</a><br /><b>Files:</b> 26 <small>(8 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605533&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:49:24 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605533&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605533&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605533</guid>
<report:id>605533</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605533&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">216304268</report:size>
<report:postdate>Tue, 05 Apr 2011 03:49:24 +0000</report:postdate>
</item>
<item>
<title>United.States.of.Tara.S03E02.720p.HDTV.x264-ORENJI</title>
<pubDate>Tue, 05 Apr 2011 05:51:16 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605532</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605532&amp;filelist=1">846.9 MB</a><br /><b>Files:</b> 26 <small>(6 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605532&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:42:42 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605532&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605532&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605532</guid>
<report:id>605532</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605532&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">888024966</report:size>
<report:postdate>Tue, 05 Apr 2011 03:42:42 +0000</report:postdate>
</item>
<item>
<title>WWE.Wrestlemania.27.PPV.HDTV.XviD-KYR</title>
<pubDate>Tue, 05 Apr 2011 05:41:55 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605528</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605528&amp;filelist=1">2.51 GB</a><br /><b>Files:</b> 66 <small>(14 pars)</small><br /><b>Group:</b> a.b.multimedia<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605528&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:38:30 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605528&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605528&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605528</guid>
<report:id>605528</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605528&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.tv (teevee)]]></report:poster>
<report:size type="bytes">2690082009</report:size>
<report:postdate>Tue, 05 Apr 2011 03:38:30 +0000</report:postdate>
</item>
<item>
<title>The.Daily.Show.2011.04.04.Billy.Crystal.HDTV.XviD-FQM</title>
<pubDate>Tue, 05 Apr 2011 05:41:54 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605527</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605527&amp;filelist=1">199.0 MB</a><br /><b>Files:</b> 20 <small>(6 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605527&amp;nfo=1#nfo">View NFO</a><br /><b>Ext. Link:</b> <a href="http://www.thedailyshow.com/">http://www.thedailyshow.com/</a><br /><b>Posted:</b> Tue April 5th 03:37:59 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605527&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605527&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605527</guid>
<report:id>605527</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605527&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">208686256</report:size>
<report:postdate>Tue, 05 Apr 2011 03:37:59 +0000</report:postdate>
<report:moreinfo>http://www.thedailyshow.com/</report:moreinfo>
</item>
<item>
<title>The.Event.S01E16.720p.HDTV.X264-DIMENSION REPOST</title>
<pubDate>Tue, 05 Apr 2011 05:32:29 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605519</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605519&amp;filelist=1">1.28 GB</a><br /><b>Files:</b> 42 <small>(14 pars)</small><br /><b>Group:</b> a.b.multimedia<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605519&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:24:05 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605519&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605519&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605519</guid>
<report:id>605519</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605519&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.tv (teevee)]]></report:poster>
<report:size type="bytes">1369823254</report:size>
<report:postdate>Tue, 05 Apr 2011 03:24:05 +0000</report:postdate>
</item>
<item>
<title>United.States.of.Tara.S03E02.Crackerjack.HDTV.XviD-FQM</title>
<pubDate>Tue, 05 Apr 2011 05:13:44 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605506</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605506&amp;filelist=1">265.2 MB</a><br /><b>Files:</b> 24 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605506&amp;nfo=1#nfo">View NFO</a><br /><b>Ext. Link:</b> <a href="http://www.sho.com/site/tara/">http://www.sho.com/site/tara/</a><br /><b>Posted:</b> Tue April 5th 03:08:58 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605506&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605506&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605506</guid>
<report:id>605506</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605506&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">278057587</report:size>
<report:postdate>Tue, 05 Apr 2011 03:08:58 +0000</report:postdate>
<report:moreinfo>http://www.sho.com/site/tara/</report:moreinfo>
</item>
<item>
<title>Harrys.Law.S01E12.HDTV.XviD-2HD</title>
<pubDate>Tue, 05 Apr 2011 05:13:41 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605505</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605505&amp;filelist=1">397.8 MB</a><br /><b>Files:</b> 30 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605505&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:07:39 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605505&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605505&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605505</guid>
<report:id>605505</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605505&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">417156038</report:size>
<report:postdate>Tue, 05 Apr 2011 03:07:39 +0000</report:postdate>
</item>
<item>
<title>Castle.2009.S03E20.720p.HDTV.X264-DIMENSION</title>
<pubDate>Tue, 05 Apr 2011 05:13:36 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605504</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605504&amp;filelist=1">1.24 GB</a><br /><b>Files:</b> 35 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605504&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:07:21 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605504&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605504&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605504</guid>
<report:id>605504</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605504&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">1333441054</report:size>
<report:postdate>Tue, 05 Apr 2011 03:07:21 +0000</report:postdate>
</item>
<item>
<title>Stargate.Universe.S02E15.720p.HDTV.X264-DIMENSION</title>
<pubDate>Tue, 05 Apr 2011 05:13:28 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605503</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605503&amp;filelist=1">1.25 GB</a><br /><b>Files:</b> 35 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605503&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:05:25 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605503&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605503&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605503</guid>
<report:id>605503</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605503&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">1337316693</report:size>
<report:postdate>Tue, 05 Apr 2011 03:05:25 +0000</report:postdate>
</item>
<item>
<title>Harrys.Law.S01E12.720p.HDTV.X264-DIMENSION</title>
<pubDate>Tue, 05 Apr 2011 05:13:18 +0000</pubDate>
<category>TV-x264</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605502</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=14">TV-x264</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605502&amp;filelist=1">1.24 GB</a><br /><b>Files:</b> 35 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605502&amp;nfo=1#nfo">View NFO</a><br /><b>Posted:</b> Tue April 5th 03:03:36 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605502&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605502&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605502</guid>
<report:id>605502</report:id>
<report:category parentID="1" id="14">TV-x264</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605502&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">1334867450</report:size>
<report:postdate>Tue, 05 Apr 2011 03:03:36 +0000</report:postdate>
</item>
<item>
<title>Castle.2009.S03E20.HDTV.XviD-LOL</title>
<pubDate>Tue, 05 Apr 2011 05:13:08 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605500</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605500&amp;filelist=1">396.7 MB</a><br /><b>Files:</b> 36 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605500&amp;nfo=1#nfo">View NFO</a><br /><b>Ext. Link:</b> <a href="http://www.tvrage.com/Castle">http://www.tvrage.com/Castle</a><br /><b>Posted:</b> Tue April 5th 03:02:22 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605500&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605500&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605500</guid>
<report:id>605500</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605500&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">415952872</report:size>
<report:postdate>Tue, 05 Apr 2011 03:02:22 +0000</report:postdate>
<report:moreinfo>http://www.tvrage.com/Castle</report:moreinfo>
</item>
<item>
<title>Stargate.Universe.S02E15.HDTV.XviD-LOL</title>
<pubDate>Tue, 05 Apr 2011 05:03:36 +0000</pubDate>
<category>TV-XviD</category>
<link>http://nzbs.org/index.php?action=view&amp;nzbid=605499</link>
<description><![CDATA[<b>Category:</b> <a href="http://nzbs.org/index.php?action=browse&amp;catid=1">TV-XviD</a><br /><b>Size:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605499&amp;filelist=1">397.4 MB</a><br /><b>Files:</b> 36 <small>(7 pars)</small><br /><b>Group:</b> a.b.teevee<br /><b>.NFO:</b> <a href="http://nzbs.org/index.php?action=view&amp;nzbid=605499&amp;nfo=1#nfo">View NFO</a><br /><b>Ext. Link:</b> <a href="http://tvrage.com/Stargate_Universe">http://tvrage.com/Stargate_Universe</a><br /><b>Posted:</b> Tue April 5th 03:01:16 UTC<br /><b><a href="http://nzbs.org/cart.php?action=rsstomynzbs&nzbid=605499&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Add to My NZBs</a></b><br /><b><a href="http://nzbs.org/index.php?action=getnzb&amp;nzbid=605499&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f">Download NZB</a></b><br />]]></description>
<guid>http://nzbs.org/index.php?action=view&amp;nzbid=605499</guid>
<report:id>605499</report:id>
<report:category parentID="1" id="1">TV-XviD</report:category>
<report:nzb>http://nzbs.org/index.php?action=getnzb&amp;nzbid=605499&amp;i=43516&amp;h=bc8edb4cc49d4ae440775adec5ac001f</report:nzb>
<report:poster><![CDATA[teevee@4u.net (teevee)]]></report:poster>
<report:size type="bytes">416749161</report:size>
<report:postdate>Tue, 05 Apr 2011 03:01:16 +0000</report:postdate>
<report:moreinfo>http://tvrage.com/Stargate_Universe</report:moreinfo>
</item>
</channel>
</rss>

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -39,24 +39,35 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\NzbDrone.Core\Libraries\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="FizzWare.NBuilder, Version=2.1.9.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Libs\FizzWare.NBuilder.dll</HintPath>
<Reference Include="FizzWare.NBuilder">
<HintPath>..\packages\NBuilder.2.3.0.0\lib\FizzWare.NBuilder.dll</HintPath>
</Reference>
<Reference Include="Gallio, Version=3.2.0.0, Culture=neutral, PublicKeyToken=eb9cfa67ee6ab36e, processorArchitecture=MSIL" />
<Reference Include="MbUnit, Version=3.2.0.0, Culture=neutral, PublicKeyToken=eb9cfa67ee6ab36e, processorArchitecture=MSIL" />
<Reference Include="Moq, Version=4.0.10827.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL" />
<Reference Include="Ninject, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<Reference Include="Microsoft.Practices.ServiceLocation">
<HintPath>..\packages\Unity.2.0\lib\20\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity">
<HintPath>..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Configuration">
<HintPath>..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.Configuration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Interception">
<HintPath>..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.Interception.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Interception.Configuration">
<HintPath>..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.Interception.Configuration.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.0.10827.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>
</Reference>
<Reference Include="Ninject">
<HintPath>..\packages\Ninject.2.2.1.0\lib\.NetFramework 4.0\Ninject.dll</HintPath>
</Reference>
<Reference Include="NLog">
<HintPath>..\NzbDrone.Core\Libraries\NLog.dll</HintPath>
</Reference>
<Reference Include="RSS.NET, Version=0.86.3627.40828, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Libs\RSS.NET.dll</HintPath>
</Reference>
<Reference Include="SubSonic.Core, Version=3.0.0.3, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\NzbDrone.Core\Libraries\SubSonic.Core.dll</HintPath>
@ -67,12 +78,17 @@
<HintPath>Libs\System.Data.SQLite.DLL</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.ServiceModel" />
<Reference Include="System.Xml" />
<Reference Include="TvdbLib">
<HintPath>..\NzbDrone.Core\Libraries\TvdbLib.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AutoMoq\AutoMoq.cs" />
<Compile Include="AutoMoq\Unity\AutoMockingBuilderStrategy.cs" />
<Compile Include="AutoMoq\Unity\AutoMockingContainerExtension.cs" />
<Compile Include="RssProviderTest.cs" />
<Compile Include="HistoryProviderTest.cs" />
<Compile Include="MediaFileProviderTests.cs" />
<Compile Include="DbConfigControllerTest.cs" />
@ -98,10 +114,13 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="AutoMoq\License.txt" />
<Content Include="Files\Feed.nzbmatrix.com.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Libs\FizzWare.NBuilder.dll" />
<Content Include="Files\RSS\nzbsorg.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Files\Queue.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
@ -113,8 +132,6 @@
</Content>
<Content Include="Libs\Moq.dll" />
<Content Include="Libs\Moq.xml" />
<Content Include="Libs\RSS.NET.dll" />
<Content Include="Libs\RSS.NET.XML" />
<Content Include="Libs\System.Data.SQLite.DLL">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>

View File

@ -12,6 +12,12 @@ namespace NzbDrone.Core.Test
// ReSharper disable InconsistentNaming
public class ParserTest
{
/*Fucked-up hall of shame,
* WWE.Wrestlemania.27.PPV.HDTV.XviD-KYR
* The.Kennedys.Part.2.DSR.XviD-SYS
*/
[Test]
[Row("Sonny.With.a.Chance.S02E15", 2, 15)]
[Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1)]
@ -28,6 +34,8 @@ namespace NzbDrone.Core.Test
[Row(@"Hawaii Five 0 S01E19 720p WEB DL DD5 1 H 264 NT", 1, 19)]
[Row(@"The Event S01E14 A Message Back 720p WEB DL DD5 1 H264 SURFER", 1, 14)]
[Row(@"Adam Hills In Gordon St Tonight S01E07 WS PDTV XviD FUtV", 1, 7)]
[Row(@"Adam Hills In Gordon St Tonight S01E07 WS PDTV XviD FUtV", 1, 7)]
[Row("The.Kennedys.Part.2.DSR.XviD-SYS", 1, 2)]
public void episode_parse(string path, int season, int episode)
{
var result = Parser.ParseEpisodeInfo(path);
@ -61,6 +69,20 @@ namespace NzbDrone.Core.Test
Assert.AreEqual(quality, result);
}
[Test]
[Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1, 2, 3, 4, 5, 6)]
[Row("Two.and.a.Half.Me.103.104.720p.HDTV.X264-DIMENSION", 1, 3, 4)]
[Row("The.Kennedys.Part.1.and.Part.2.DSR.XviD-SYS", 1, 1, 2)]
public void episode_multipart_parse(string path, int season, params int[] episodes)
{
var result = Parser.ParseEpisodeInfo(path);
Assert.AreEqual(season, result.SeasonNumber);
Assert.Count(episodes.Length, result.Episodes);
Assert.AreElementsEqualIgnoringOrder(episodes, result.Episodes);
}
[Test]
[Row(@"c:\test\", @"c:\test")]
[Row(@"c:\\test\\", @"c:\test")]

View File

@ -1,15 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FizzWare.NBuilder;
using Gallio.Framework;
using MbUnit.Framework;
using MbUnit.Framework.ContractVerifiers;
using Ninject;
using NLog;
using NzbDrone.Core.Instrumentation;
using NzbDrone.Core.Model;
using NzbDrone.Core.Repository;
using LogLevel = NzbDrone.Core.Instrumentation.LogLevel;
using NLog.Config;
@ -76,6 +70,7 @@ namespace NzbDrone.Core.Test
var sonicRepo = MockLib.GetEmptyRepository();
var sonicTarget = new SubsonicTarget(sonicRepo);
LogManager.Configuration.AddTarget("DbLogger", sonicTarget);
LogManager.Configuration.LoggingRules.Add(new LoggingRule("*", NLog.LogLevel.Info, sonicTarget));
LogManager.Configuration.Reload();

View File

@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.ServiceModel.Syndication;
using System.Text;
using System.Xml;
using AutoMoq;
using Gallio.Framework;
using MbUnit.Framework;
using MbUnit.Framework.ContractVerifiers;
using Moq;
using Ninject;
using Ninject.Moq;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Providers.Feed;
using NzbDrone.Core.Repository;
using SubSonic.Repository;
namespace NzbDrone.Core.Test
{
[TestFixture]
public class RssProviderTest
// ReSharper disable InconsistentNaming
{
[Test]
public void Download_feed_test()
{
var mocker = new AutoMoqer();
var xmlReader = XmlReader.Create(File.OpenRead(".\\Files\\Rss\\nzbsorg.xml"));
mocker.GetMock<HttpProvider>()
.Setup(h => h.DownloadXml(It.IsAny<String>()))
.Returns(xmlReader);
mocker.Resolve<MockFeedProvider>().Fetch();
}
}
public class MockFeedProvider : FeedProviderBase
{
public MockFeedProvider(ISeriesProvider seriesProvider, ISeasonProvider seasonProvider, IEpisodeProvider episodeProvider, IConfigProvider configProvider, HttpProvider httpProvider)
: base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider)
{
}
protected override string[] URL
{
get { return new[] { "www.google.com" }; }
}
protected override string Name
{
get { return "MyName"; }
}
protected override string NzbDownloadUrl(SyndicationItem item)
{
return item.Links[0].Uri.ToString();
}
}
}

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Text;
using AutoMoq;
using Gallio.Framework;
using MbUnit.Framework;
using MbUnit.Framework.ContractVerifiers;
@ -28,22 +29,31 @@ namespace NzbDrone.Core.Test
string priority = "0";
string category = "tv";
var config = new Mock<IConfigProvider>();
config.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
config.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
config.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
config.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
config.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
config.Setup(c => c.GetValue("SabTvPriority", String.Empty, false)).Returns(priority);
config.Setup(c => c.GetValue("SabTvCategory", String.Empty, true)).Returns(category);
var http = new Mock<IHttpProvider>();
http.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=addurl&name=http://www.nzbclub.com/nzb_download.aspx?mid=1950232&priority=0&cat=tv&nzbname=This+is+an+Nzb&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass")).Returns("ok");
var mocker = new AutoMoqer();
var target = new SabProvider(config.Object, http.Object);
var fakeConfig = mocker.GetMock<IConfigProvider>();
fakeConfig.Setup(c => c.GetValue("SabHost", String.Empty, false))
.Returns(sabHost);
fakeConfig.Setup(c => c.GetValue("SabPort", String.Empty, false))
.Returns(sabPort);
fakeConfig.Setup(c => c.GetValue("SabApiKey", String.Empty, false))
.Returns(apikey);
fakeConfig.Setup(c => c.GetValue("SabUsername", String.Empty, false))
.Returns(username);
fakeConfig.Setup(c => c.GetValue("SabPassword", String.Empty, false))
.Returns(password);
fakeConfig.Setup(c => c.GetValue("SabTvPriority", String.Empty, false))
.Returns(priority);
fakeConfig.Setup(c => c.GetValue("SabTvCategory", String.Empty, true))
.Returns(category);
mocker.GetMock<HttpProvider>()
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=addurl&name=http://www.nzbclub.com/nzb_download.aspx?mid=1950232&priority=0&cat=tv&nzbname=This+is+an+Nzb&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
.Returns("ok");
//Act
bool result = target.AddByUrl("http://www.nzbclub.com/nzb_download.aspx?mid=1950232", "This is an Nzb");
bool result = mocker.Resolve<SabProvider>().AddByUrl("http://www.nzbclub.com/nzb_download.aspx?mid=1950232", "This is an Nzb");
//Assert
Assert.AreEqual(true, result);
@ -61,22 +71,23 @@ namespace NzbDrone.Core.Test
string priority = "0";
string category = "tv";
var config = new Mock<IConfigProvider>();
config.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
config.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
config.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
config.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
config.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
config.Setup(c => c.GetValue("SabTvPriority", String.Empty, false)).Returns(priority);
config.Setup(c => c.GetValue("SabTvCategory", String.Empty, true)).Returns(category);
var mocker = new AutoMoqer();
var http = new Mock<IHttpProvider>();
http.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=addurl&name=http://www.nzbclub.com/nzb_download.aspx?mid=1950232&priority=0&cat=tv&nzbname=This+is+an+Nzb&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass")).Returns("error");
var fakeConfig = mocker.GetMock<IConfigProvider>();
fakeConfig.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
fakeConfig.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
fakeConfig.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
fakeConfig.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
fakeConfig.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
fakeConfig.Setup(c => c.GetValue("SabTvPriority", String.Empty, false)).Returns(priority);
fakeConfig.Setup(c => c.GetValue("SabTvCategory", String.Empty, true)).Returns(category);
var target = new SabProvider(config.Object, http.Object);
mocker.GetMock<HttpProvider>()
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=addurl&name=http://www.nzbclub.com/nzb_download.aspx?mid=1950232&priority=0&cat=tv&nzbname=This+is+an+Nzb&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
.Returns("error");
//Act
bool result = target.AddByUrl("http://www.nzbclub.com/nzb_download.aspx?mid=1950232", "This is an Nzb");
bool result = mocker.Resolve<SabProvider>().AddByUrl("http://www.nzbclub.com/nzb_download.aspx?mid=1950232", "This is an Nzb");
//Assert
Assert.AreEqual(false, result);
@ -92,24 +103,21 @@ namespace NzbDrone.Core.Test
string username = "admin";
string password = "pass";
var config = new Mock<IConfigProvider>();
config.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
config.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
config.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
config.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
config.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
var mocker = new AutoMoqer();
var http = new Mock<IHttpProvider>();
http.Setup(
s =>
s.DownloadString(
"http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
var fakeConfig = mocker.GetMock<IConfigProvider>();
fakeConfig.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
fakeConfig.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
fakeConfig.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
fakeConfig.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
fakeConfig.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
mocker.GetMock<HttpProvider>()
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
.Returns(new StreamReader(@".\Files\Queue.xml").ReadToEnd());
var target = new SabProvider(config.Object, http.Object);
//Act
bool result = target.IsInQueue("Ubuntu Test");
bool result = mocker.Resolve<SabProvider>().IsInQueue("Ubuntu Test");
//Assert
Assert.AreEqual(true, result);
@ -125,24 +133,21 @@ namespace NzbDrone.Core.Test
string username = "admin";
string password = "pass";
var config = new Mock<IConfigProvider>();
config.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
config.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
config.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
config.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
config.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
var mocker = new AutoMoqer();
var http = new Mock<IHttpProvider>();
http.Setup(
s =>
s.DownloadString(
"http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
.Returns(new StreamReader(@".\Files\QueueEmpty.xml").ReadToEnd());
var fakeConfig = mocker.GetMock<IConfigProvider>();
fakeConfig.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
fakeConfig.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
fakeConfig.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
fakeConfig.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
fakeConfig.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
var target = new SabProvider(config.Object, http.Object);
mocker.GetMock<HttpProvider>()
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
.Returns(new StreamReader(@".\Files\QueueEmpty.xml").ReadToEnd());
//Act
bool result = target.IsInQueue(String.Empty);
bool result = mocker.Resolve<SabProvider>().IsInQueue(String.Empty);
//Assert
Assert.AreEqual(false, result);
@ -158,24 +163,22 @@ namespace NzbDrone.Core.Test
string username = "admin";
string password = "pass";
var config = new Mock<IConfigProvider>();
config.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
config.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
config.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
config.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
config.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
var mocker = new AutoMoqer();
var http = new Mock<IHttpProvider>();
http.Setup(
s =>
s.DownloadString(
"http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
.Returns(new StreamReader(@".\Files\QueueError.xml").ReadToEnd());
var fakeConfig = mocker.GetMock<IConfigProvider>();
fakeConfig.Setup(c => c.GetValue("SabHost", String.Empty, false)).Returns(sabHost);
fakeConfig.Setup(c => c.GetValue("SabPort", String.Empty, false)).Returns(sabPort);
fakeConfig.Setup(c => c.GetValue("SabApiKey", String.Empty, false)).Returns(apikey);
fakeConfig.Setup(c => c.GetValue("SabUsername", String.Empty, false)).Returns(username);
fakeConfig.Setup(c => c.GetValue("SabPassword", String.Empty, false)).Returns(password);
mocker.GetMock<HttpProvider>()
.Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=xml&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
.Returns(new StreamReader(@".\Files\QueueError.xml").ReadToEnd());
var target = new SabProvider(config.Object, http.Object);
//Act
bool result = target.IsInQueue(String.Empty);
bool result = mocker.Resolve<SabProvider>().IsInQueue(String.Empty);
//Assert
Assert.AreEqual(false, result);

View File

@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using AutoMoq;
using FizzWare.NBuilder;
using Gallio.Framework;
using MbUnit.Framework;
@ -12,6 +13,7 @@ using Ninject;
using Ninject.Moq;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Repository;
using NzbDrone.Core.Repository.Quality;
using SubSonic.Repository;
using TvdbLib.Data;
using System.Linq;
@ -27,30 +29,36 @@ namespace NzbDrone.Core.Test
public void Map_path_to_series()
{
//Arrange
TvdbSeries fakeSeries = Builder<TvdbSeries>.CreateNew().With(f => f.SeriesName = "The Simpsons").Build();
var fakeSearch = Builder<TvdbSearchResult>.CreateNew().Build();
fakeSearch.Id = fakeSeries.Id;
fakeSearch.SeriesName = fakeSeries.SeriesName;
var fakeSeries = Builder<TvdbSeries>.CreateNew()
.With(f => f.SeriesName = "The Simpsons")
.Build();
var moqData = new Mock<IRepository>();
var moqTvdb = new Mock<ITvDbProvider>();
var fakeSearch = Builder<TvdbSearchResult>.CreateNew()
.With(s => s.Id = fakeSeries.Id)
.With(s => s.SeriesName = fakeSeries.SeriesName)
.Build();
moqData.Setup(f => f.Exists<Series>(c => c.SeriesId == It.IsAny<int>())).Returns(false);
moqTvdb.Setup(f => f.GetSeries(It.IsAny<String>())).Returns(fakeSearch);
moqTvdb.Setup(f => f.GetSeries(fakeSeries.Id, false)).Returns(fakeSeries).Verifiable();
var mocker = new AutoMoqer();
var kernel = new MockingKernel();
kernel.Bind<IRepository>().ToConstant(moqData.Object);
kernel.Bind<ITvDbProvider>().ToConstant(moqTvdb.Object);
kernel.Bind<ISeriesProvider>().To<SeriesProvider>();
mocker.GetMock<IRepository>()
.Setup(f => f.Exists<Series>(c => c.SeriesId == It.IsAny<int>()))
.Returns(false);
mocker.GetMock<TvDbProvider>()
.Setup(f => f.GetSeries(It.IsAny<String>()))
.Returns(fakeSearch);
mocker.GetMock<TvDbProvider>()
.Setup(f => f.GetSeries(fakeSeries.Id, false))
.Returns(fakeSeries)
.Verifiable();
//Act
var seriesController = kernel.Get<ISeriesProvider>();
var mappedSeries = seriesController.MapPathToSeries(@"D:\TV Shows\The Simpsons");
var mappedSeries = mocker.Resolve<SeriesProvider>().MapPathToSeries(@"D:\TV Shows\The Simpsons");
//Assert
moqTvdb.VerifyAll();
mocker.GetMock<TvDbProvider>().VerifyAll();
Assert.AreEqual(fakeSeries, mappedSeries);
}
@ -96,26 +104,69 @@ namespace NzbDrone.Core.Test
//Assert.AreEqual(title, result, postTitle);
}
//[Test]
//public void get_unmapped()
//{
// //Setup
// var kernel = new MockingKernel();
[Test]
public void Test_is_monitored()
{
var kernel = new MockingKernel();
var repo = MockLib.GetEmptyRepository();
kernel.Bind<IRepository>().ToConstant(repo);
kernel.Bind<ISeriesProvider>().To<SeriesProvider>();
repo.Add(Builder<Series>.CreateNew()
.With(c => c.Monitored = true)
.With(c => c.SeriesId = 12)
.Build());
repo.Add(Builder<Series>.CreateNew()
.With(c => c.Monitored = false)
.With(c => c.SeriesId = 11)
.Build());
// kernel.Bind<ISeriesProvider>().To<SeriesProvider>();
// kernel.Bind<IDiskProvider>().ToConstant(MockLib.GetStandardDisk(0, 0));
// kernel.Bind<IConfigProvider>().ToConstant(MockLib.StandardConfig);
// var seriesController = kernel.Get<ISeriesProvider>();
// //Act
// var unmappedFolder = seriesController.GetUnmappedFolders();
// //Assert
// Assert.AreElementsEqualIgnoringOrder(MockLib.StandardSeries, unmappedFolder.Values);
//}
//Act, Assert
var provider = kernel.Get<ISeriesProvider>();
Assert.IsTrue(provider.IsMonitored(12));
Assert.IsFalse(provider.IsMonitored(11));
Assert.IsFalse(provider.IsMonitored(1));
}
[Test]
[Row(12, QualityTypes.TV, true)]
[Row(12, QualityTypes.Unknown, false)]
[Row(12, QualityTypes.Bluray1080, false)]
[Row(12, QualityTypes.Bluray720, false)]
[Row(12, QualityTypes.HDTV, false)]
[Row(12, QualityTypes.WEBDL, false)]
public void QualityWanted(int seriesId, QualityTypes qualityTypes, Boolean result)
{
var kernel = new MockingKernel();
var repo = MockLib.GetEmptyRepository();
kernel.Bind<IRepository>().ToConstant(repo);
kernel.Bind<ISeriesProvider>().To<SeriesProvider>();
var quality = Builder<QualityProfile>.CreateNew()
.With(q => q.Allowed = new List<QualityTypes>() { QualityTypes.BDRip, QualityTypes.DVD, QualityTypes.TV })
.With(q => q.Cutoff = QualityTypes.DVD)
.Build();
var qualityProviderMock = new Mock<IQualityProvider>();
qualityProviderMock.Setup(c => c.Find(quality.QualityProfileId)).Returns(quality).Verifiable();
kernel.Bind<IQualityProvider>().ToConstant(qualityProviderMock.Object);
repo.Add(Builder<Series>.CreateNew()
.With(c => c.SeriesId = 12)
.With(c => c.QualityProfileId = quality.QualityProfileId)
.Build());
//Act
var needed = kernel.Get<ISeriesProvider>().QualityWanted(seriesId, qualityTypes);
Assert.AreEqual(result, needed);
}
}
}

View File

@ -1,8 +1,16 @@
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">
<targets>
<target name="consoleTarget" xsi:type="ColoredConsole" layout="${logger}: ${message}" />
<target name="udpTarget" xsi:type="Chainsaw" address="udp://127.0.0.1:20480"
includeCallSite="true" includeSourceInfo="true" includeNLogData="true" includeNDC="true" includeMDC="true">
<parameter name="exception" layout="${exception:format=ToString}" xsi:type="NLogViewerParameterInfo" />
<parameter name="processname" layout="${processname}" xsi:type="NLogViewerParameterInfo" />
<parameter name="stacktrace" layout="${stacktrace:topFrames=99}" xsi:type="NLogViewerParameterInfo" />
<parameter name="ThreadName" layout="${threadname}" xsi:type="NLogViewerParameterInfo" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="consoleTarget"/>
<logger name="*" minlevel="Trace" writeTo="udpTarget"/>
</rules>
</nlog>

View File

@ -1,4 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Ninject" version="2.2.1.0" />
<package id="NBuilder" version="2.3.0.0" />
<package id="Moq" version="4.0.10827" />
<package id="Unity" version="2.0" />
</packages>

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Web;
using System.Web.Hosting;
using Ninject;
using NLog.Config;
using NLog.Targets;
@ -62,9 +63,9 @@ namespace NzbDrone.Core
_kernel.Bind<IEpisodeProvider>().To<EpisodeProvider>();
_kernel.Bind<IUpcomingEpisodesProvider>().To<UpcomingEpisodesProvider>();
_kernel.Bind<IDiskProvider>().To<DiskProvider>();
_kernel.Bind<ITvDbProvider>().To<TvDbProvider>();
_kernel.Bind<TvDbProvider>().To<TvDbProvider>();
_kernel.Bind<IDownloadProvider>().To<SabProvider>();
_kernel.Bind<IHttpProvider>().To<HttpProvider>();
_kernel.Bind<HttpProvider>().To<HttpProvider>();
_kernel.Bind<IHistoryProvider>().To<HistoryProvider>();
_kernel.Bind<IQualityProvider>().To<QualityProvider>();
_kernel.Bind<IRootDirProvider>().To<RootDirProvider>();
@ -99,11 +100,12 @@ namespace NzbDrone.Core
{
get
{
if (HttpContext.Current != null)
if (!String.IsNullOrWhiteSpace(HostingEnvironment.ApplicationPhysicalPath))
{
return new DirectoryInfo(HttpContext.Current.Server.MapPath("\\")).FullName;
return HostingEnvironment.ApplicationPhysicalPath;
}
return Directory.GetCurrentDirectory();
}
}

View File

@ -5,28 +5,36 @@ namespace NzbDrone.Core.Instrumentation
{
public class Log
{
public int LogId { get; set; }
[SubSonicPrimaryKey]
public int LogId { get; protected set; }
[SubSonicLongString]
public string Message { get; set; }
public DateTime Time { get; set; }
public string Logger { get; set; }
[SubSonicNullString]
public string Stack { get; set; }
[SubSonicNullString]
[SubSonicLongString]
public string ExceptionMessage { get; set; }
[SubSonicNullString]
[SubSonicLongString]
public string ExceptionString { get; set; }
[SubSonicNullString]
public string ExceptionType { get; set; }
public LogLevel Level { get; set; }
//This is needed for telerik grid binding
//This is needed for Telerik grid binding
[SubSonicIgnore]
public string DisplayLevel{
public string DisplayLevel
{
get { return Level.ToString(); }
}
}

View File

@ -1,5 +1,4 @@
using NzbDrone.Core.Repository.Quality;
using SubSonic.SqlGeneration.Schema;
namespace NzbDrone.Core.Model
{

View File

@ -121,7 +121,9 @@
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="Castle.Core, Version=2.5.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL" />
<Reference Include="Castle.Core">
<HintPath>Libraries\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Exceptioneer.WindowsFormsClient, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Libraries\Exceptioneer.WindowsFormsClient.dll</HintPath>
@ -138,7 +140,8 @@
<HintPath>Libraries\NLog.Extended.dll</HintPath>
</Reference>
<Reference Include="SubSonic.Core, Version=3.0.0.3, Culture=neutral, processorArchitecture=MSIL">
<HintPath>D:\OpenSource\sabscripts\SABSync\References\SubSonic.Core.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<HintPath>Libraries\SubSonic.Core.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
@ -151,7 +154,9 @@
<Reference Include="System.Web.Extensions" />
<Reference Include="System.XML" />
<Reference Include="System.Xml.Linq" />
<Reference Include="TvdbLib, Version=0.8.8.0, Culture=neutral, processorArchitecture=MSIL" />
<Reference Include="TvdbLib">
<HintPath>Libraries\TvdbLib.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Helpers\EpisodeRenameHelper.cs" />
@ -216,10 +221,8 @@
<Compile Include="Providers\Core\HttpProvider.cs" />
<Compile Include="Providers\IDownloadProvider.cs" />
<Compile Include="Providers\IEpisodeProvider.cs" />
<Compile Include="Providers\Core\IHttpProvider.cs" />
<Compile Include="Providers\ISeasonProvider.cs" />
<Compile Include="Providers\ISeriesProvider.cs" />
<Compile Include="Providers\ITvDbProvider.cs" />
<Compile Include="Providers\SabProvider.cs" />
<Compile Include="Providers\SeasonProvider.cs" />
<Compile Include="Repository\Episode.cs" />
@ -263,24 +266,6 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="Libraries\Castle.Core.dll" />
<Content Include="Libraries\Castle.Core.xml" />
<Content Include="Libraries\Exceptioneer.WindowsFormsClient.dll" />
<Content Include="Libraries\NLog.dll" />
<Content Include="Libraries\NLog.Extended.dll" />
<Content Include="Libraries\NLog.Extended.xml" />
<Content Include="Libraries\NLog.xml" />
<Content Include="Libraries\SubSonic.Core.dll" />
<Content Include="Libraries\SubSonic.Core.XML" />
<Content Include="Libraries\System.Data.SQLite.dll" />
<Content Include="Libraries\System.Data.SQLite.XML" />
<Content Include="Libraries\TvdbLib.dll" />
<Content Include="Libraries\TvdbLib.XML" />
</ItemGroup>
<ItemGroup>
<None Include="Libraries\nlog.xsd">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View File

@ -74,7 +74,7 @@ namespace NzbDrone.Core
return parsedEpisode;
}
}
Logger.Warn("Unable to parse text into episode info. {0}", title);
return null;
}

View File

@ -1,14 +1,15 @@
using System;
using System.Net;
using System.Xml;
using NLog;
namespace NzbDrone.Core.Providers.Core
{
internal class HttpProvider : IHttpProvider
public class HttpProvider
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public string DownloadString(string request)
public virtual string DownloadString(string request)
{
try
{
@ -23,7 +24,7 @@ namespace NzbDrone.Core.Providers.Core
return String.Empty;
}
public string DownloadString(string request, string username, string password)
public virtual string DownloadString(string request, string username, string password)
{
try
{
@ -40,39 +41,43 @@ namespace NzbDrone.Core.Providers.Core
return String.Empty;
}
public bool DownloadFile(string request, string filename)
public virtual void DownloadFile(string request, string filename)
{
try
{
var webClient = new WebClient();
webClient.DownloadFile(request, filename);
return true;
}
catch (Exception ex)
{
Logger.Warn("Failed to get response from: {0}", request);
Logger.TraceException(ex.Message, ex);
throw;
}
return false;
}
public bool DownloadFile(string request, string filename, string username, string password)
public virtual void DownloadFile(string request, string filename, string username, string password)
{
try
{
var webClient = new WebClient();
webClient.Credentials = new NetworkCredential(username, password);
webClient.DownloadFile(request, filename);
return true;
}
catch (Exception ex)
{
Logger.Warn("Failed to get response from: {0}", request);
Logger.TraceException(ex.Message, ex);
throw;
}
}
return false;
public virtual XmlReader DownloadXml(string url)
{
return XmlReader.Create(url);
}
}
}

View File

@ -1,10 +0,0 @@
namespace NzbDrone.Core.Providers.Core
{
public interface IHttpProvider
{
string DownloadString(string request);
string DownloadString(string request, string username, string password);
bool DownloadFile(string request, string filename);
bool DownloadFile(string request, string filename, string username, string password);
}
}

View File

@ -16,13 +16,13 @@ namespace NzbDrone.Core.Providers
private readonly IRepository _sonicRepo;
private readonly ISeriesProvider _series;
private readonly ISeasonProvider _seasons;
private readonly ITvDbProvider _tvDb;
private readonly TvDbProvider _tvDb;
private readonly IHistoryProvider _history;
private readonly IQualityProvider _quality;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public EpisodeProvider(IRepository sonicRepo, ISeriesProvider seriesProvider,
ISeasonProvider seasonProvider, ITvDbProvider tvDbProvider,
ISeasonProvider seasonProvider, TvDbProvider tvDbProvider,
IHistoryProvider history, IQualityProvider quality)
{
_sonicRepo = sonicRepo;

View File

@ -6,20 +6,23 @@ using NzbDrone.Core.Providers.Core;
namespace NzbDrone.Core.Providers.Feed
{
abstract class FeedProviderBase
public abstract class FeedProviderBase
{
protected readonly ISeriesProvider _seriesProvider;
protected readonly ISeasonProvider _seasonProvider;
protected readonly IEpisodeProvider _episodeProvider;
protected readonly IConfigProvider _configProvider;
private readonly HttpProvider _httpProvider;
protected static readonly Logger Logger = LogManager.GetCurrentClassLogger();
protected FeedProviderBase(ISeriesProvider seriesProvider, ISeasonProvider seasonProvider, IEpisodeProvider episodeProvider, IConfigProvider configProvider)
public FeedProviderBase(ISeriesProvider seriesProvider, ISeasonProvider seasonProvider,
IEpisodeProvider episodeProvider, IConfigProvider configProvider, HttpProvider httpProvider)
{
_seriesProvider = seriesProvider;
_seasonProvider = seasonProvider;
_episodeProvider = episodeProvider;
_configProvider = configProvider;
_httpProvider = httpProvider;
}
@ -49,7 +52,9 @@ namespace NzbDrone.Core.Providers.Feed
/// <returns>Detailed episode info</returns>
protected EpisodeParseResult ParseFeed(SyndicationItem item)
{
var episodeParseResult = Parser.ParseEpisodeInfo(item.Title.ToString());
var episodeParseResult = Parser.ParseEpisodeInfo(item.Title.Text);
if (episodeParseResult == null) return null;
var seriesInfo = _seriesProvider.FindSeries(episodeParseResult.SeriesTitle);
if (seriesInfo != null)
@ -76,7 +81,7 @@ namespace NzbDrone.Core.Providers.Feed
foreach (var url in URL)
{
Logger.Debug("Downloading RSS " + url);
var feed = SyndicationFeed.Load(XmlReader.Create(url)).Items;
var feed = SyndicationFeed.Load(_httpProvider.DownloadXml(url)).Items;
foreach (var item in feed)
{
@ -89,28 +94,31 @@ namespace NzbDrone.Core.Providers.Feed
private void ProcessItem(SyndicationItem feedItem)
{
Logger.Info("Processing RSS feed item " + feedItem.Title);
Logger.Info("Processing RSS feed item " + feedItem.Title.Text);
var parseResult = ParseFeed(feedItem);
if (!_seriesProvider.IsMonitored(parseResult.SeriesId))
if (parseResult != null)
{
Logger.Debug("{0} is present in the DB but not tracked. skipping.", parseResult.SeriesTitle);
}
if (!_seriesProvider.IsMonitored(parseResult.SeriesId))
{
Logger.Debug("{0} is present in the DB but not tracked. skipping.", parseResult.SeriesTitle);
}
if (!_seriesProvider.QualityWanted(parseResult.SeriesId, parseResult.Quality))
{
Logger.Debug("Post doesn't meet the quality requirements [{0}]. skipping.", parseResult.Quality);
}
if (!_seriesProvider.QualityWanted(parseResult.SeriesId, parseResult.Quality))
{
Logger.Debug("Post doesn't meet the quality requirements [{0}]. skipping.", parseResult.Quality);
}
if (_seasonProvider.IsIgnored(parseResult.SeriesId, parseResult.SeasonNumber))
{
Logger.Debug("Season {0} is currently set to ignore. skipping.", parseResult.SeasonNumber);
}
if (_seasonProvider.IsIgnored(parseResult.SeriesId, parseResult.SeasonNumber))
{
Logger.Debug("Season {0} is currently set to ignore. skipping.", parseResult.SeasonNumber);
}
if (!_episodeProvider.IsNeeded(parseResult))
{
Logger.Debug("Episode {0} is not needed. skipping.", parseResult);
if (!_episodeProvider.IsNeeded(parseResult))
{
Logger.Debug("Episode {0} is not needed. skipping.", parseResult);
}
}
}
}

View File

@ -9,8 +9,8 @@ namespace NzbDrone.Core.Providers.Feed
{
class NzbsOrgFeedProvider : FeedProviderBase
{
public NzbsOrgFeedProvider(ISeriesProvider seriesProvider, ISeasonProvider seasonProvider, IEpisodeProvider episodeProvider, IConfigProvider configProvider)
: base(seriesProvider, seasonProvider, episodeProvider, configProvider)
public NzbsOrgFeedProvider(ISeriesProvider seriesProvider, ISeasonProvider seasonProvider, IEpisodeProvider episodeProvider, IConfigProvider configProvider, HttpProvider httpProvider)
: base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider)
{
}

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Providers
void Begin();
}
class RssSyncProvider : IRssSyncProvider
public class RssSyncProvider : IRssSyncProvider
{
public void Begin()
{

View File

@ -1,13 +0,0 @@
using System.Collections.Generic;
using TvdbLib.Data;
namespace NzbDrone.Core.Providers
{
public interface ITvDbProvider
{
IList<TvdbSearchResult> SearchSeries(string name);
int GetBestMatch(List<TvdbSearchResult> searchResults, string searchString);
TvdbSearchResult GetSeries(string title);
TvdbSeries GetSeries(int id, bool loadEpisodes);
}
}

View File

@ -10,11 +10,11 @@ namespace NzbDrone.Core.Providers
public class SabProvider : IDownloadProvider
{
private readonly IConfigProvider _config;
private readonly IHttpProvider _http;
private readonly HttpProvider _http;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public SabProvider(IConfigProvider config, IHttpProvider http)
public SabProvider(IConfigProvider config, HttpProvider http)
{
_config = config;
_http = http;

View File

@ -8,7 +8,7 @@ using System.Linq;
namespace NzbDrone.Core.Providers
{
class SeasonProvider : ISeasonProvider
public class SeasonProvider : ISeasonProvider
{
private readonly IRepository _sonicRepo;
private readonly ISeriesProvider _seriesProvider;

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Ninject;
using NLog;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
@ -20,13 +21,12 @@ namespace NzbDrone.Core.Providers
private readonly IConfigProvider _config;
private readonly IRepository _sonioRepo;
private readonly ITvDbProvider _tvDb;
private readonly TvDbProvider _tvDb;
private readonly IQualityProvider _quality;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public SeriesProvider(IConfigProvider configProvider,
IRepository dataRepository, ITvDbProvider tvDbProvider, IQualityProvider quality)
IRepository dataRepository, TvDbProvider tvDbProvider, IQualityProvider quality)
{
_config = configProvider;
_sonioRepo = dataRepository;
@ -36,12 +36,12 @@ namespace NzbDrone.Core.Providers
#region ISeriesProvider Members
public IQueryable<Series> GetAllSeries()
public virtual IQueryable<Series> GetAllSeries()
{
return _sonioRepo.All<Series>();
}
public Series GetSeries(int seriesId)
public virtual Series GetSeries(int seriesId)
{
return _sonioRepo.Single<Series>(s => s.SeriesId == seriesId);
}
@ -51,20 +51,20 @@ namespace NzbDrone.Core.Providers
/// </summary>
/// <param name="id">The TVDB ID of the series</param>
/// <returns>Whether or not the show is monitored</returns>
public bool IsMonitored(long id)
public virtual bool IsMonitored(long id)
{
return _sonioRepo.Exists<Series>(c => c.SeriesId == id && c.Monitored);
}
public bool QualityWanted(int seriesId, QualityTypes quality)
public virtual bool QualityWanted(int seriesId, QualityTypes quality)
{
var series = _sonioRepo.Single<Series>(seriesId);
var profile = _quality.Find(series.QualityProfileId);
var profile = _quality.Find(series.QualityProfileId);
return profile.Allowed.Contains(quality);
}
public TvdbSeries MapPathToSeries(string path)
public virtual TvdbSeries MapPathToSeries(string path)
{
var seriesPath = new DirectoryInfo(path);
var searchResults = _tvDb.GetSeries(seriesPath.Name);
@ -75,7 +75,7 @@ namespace NzbDrone.Core.Providers
return _tvDb.GetSeries(searchResults.Id, false);
}
public Series UpdateSeriesInfo(int seriesId)
public virtual Series UpdateSeriesInfo(int seriesId)
{
var tvDbSeries = _tvDb.GetSeries(seriesId, true);
var series = GetSeries(seriesId);
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Providers
return series;
}
public void AddSeries(string path, int tvDbSeriesId, int qualityProfileId)
public virtual void AddSeries(string path, int tvDbSeriesId, int qualityProfileId)
{
Logger.Info("Adding Series [{0}] Path: [{1}]", tvDbSeriesId, path);
@ -111,17 +111,17 @@ namespace NzbDrone.Core.Providers
_sonioRepo.Add(repoSeries);
}
public Series FindSeries(string title)
public virtual Series FindSeries(string title)
{
return _sonioRepo.Single<Series>(s => s.CleanTitle == Parser.NormalizeTitle(title));
}
public void UpdateSeries(Series series)
public virtual void UpdateSeries(Series series)
{
_sonioRepo.Update(series);
}
public void DeleteSeries(int seriesId)
public virtual void DeleteSeries(int seriesId)
{
Logger.Warn("Deleting Series [{0}]", seriesId);
@ -154,7 +154,7 @@ namespace NzbDrone.Core.Providers
}
}
public bool SeriesPathExists(string cleanPath)
public virtual bool SeriesPathExists(string cleanPath)
{
if (_sonioRepo.Exists<Series>(s => s.Path == cleanPath))
return true;

View File

@ -9,7 +9,7 @@ using TvdbLib.Data;
namespace NzbDrone.Core.Providers
{
public class TvDbProvider : ITvDbProvider
public class TvDbProvider
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private static readonly Regex CleanUpRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
@ -22,9 +22,9 @@ namespace NzbDrone.Core.Providers
_handler = new TvdbHandler(new XmlCacheProvider(CentralDispatch.AppPath + @"\cache\tvdb"), TVDB_APIKEY);
}
#region ITvDbProvider Members
#region TvDbProvider Members
public IList<TvdbSearchResult> SearchSeries(string title)
public virtual IList<TvdbSearchResult> SearchSeries(string title)
{
Logger.Debug("Searching TVDB for '{0}'", title);
var result = _handler.SearchSeries(title);
@ -34,7 +34,7 @@ namespace NzbDrone.Core.Providers
}
public TvdbSearchResult GetSeries(string title)
public virtual TvdbSearchResult GetSeries(string title)
{
var searchResults = SearchSeries(title);
if (searchResults.Count == 0)
@ -52,7 +52,7 @@ namespace NzbDrone.Core.Providers
return null;
}
public int GetBestMatch(List<TvdbSearchResult> searchResults, string title)
public virtual int GetBestMatch(List<TvdbSearchResult> searchResults, string title)
{
if (searchResults.Count == 0)
return 0;
@ -69,7 +69,7 @@ namespace NzbDrone.Core.Providers
return searchResults[0].Id;
}
public TvdbSeries GetSeries(int id, bool loadEpisodes)
public virtual TvdbSeries GetSeries(int id, bool loadEpisodes)
{
Logger.Debug("Fetching SeriesId'{0}' from tvdb", id);
return _handler.GetSeries(id, TvdbLanguage.DefaultLanguage, loadEpisodes, false, false);

View File

@ -13,11 +13,11 @@ namespace NzbDrone.Core.Providers
public class XbmcProvider : IXbmcProvider
{
private readonly IConfigProvider _configProvider;
private readonly IHttpProvider _httpProvider;
private readonly HttpProvider _httpProvider;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public XbmcProvider(IConfigProvider configProvider, IHttpProvider httpProvider)
public XbmcProvider(IConfigProvider configProvider, HttpProvider httpProvider)
{
_configProvider = configProvider;
_httpProvider = httpProvider;

View File

@ -6,7 +6,7 @@ namespace NzbDrone.Core.Repository
{
public class History
{
[SubSonicPrimaryKey(true)]
[SubSonicPrimaryKey]
public virtual int HistoryId { get; set; }
public virtual int EpisodeId { get; set; }
public virtual int IndexerId { get; set; }

View File

@ -10,7 +10,7 @@ namespace NzbDrone.Core.Repository
{
public class Indexer
{
[SubSonicPrimaryKey(false)]
[SubSonicPrimaryKey]
public virtual int IndexerId { get; set; }
public string IndexerName { get; set; }

View File

@ -8,7 +8,7 @@ namespace NzbDrone.Core.Repository.Quality
{
public class QualityProfile
{
[SubSonicPrimaryKey(true)]
[SubSonicPrimaryKey]
public virtual int QualityProfileId { get; set; }
[Required(ErrorMessage = "A Name is Required")]
@ -36,6 +36,8 @@ namespace NzbDrone.Core.Repository.Quality
get
{
string result = String.Empty;
if (Allowed == null) return result;
foreach (var q in Allowed)
{
result += (int)q + "|";

View File

@ -8,6 +8,7 @@ namespace NzbDrone.Core.Repository
{
public class RootDir
{
[SubSonicPrimaryKey]
public virtual int Id { get; set; }
public string Path { get; set; }

View File

@ -125,9 +125,9 @@ namespace NzbDrone.Web.Controllers
public SelectList GetSuggestionList(string searchString)
{
var dataVal = _tvDbProvider.SearchSeries(searchString);
var bestResult = _tvDbProvider.GetBestMatch(dataVal.ToList(), searchString);
//var bestResult = _tvDbProvider.GetBestMatch(dataVal.ToList(), searchString);
return new SelectList(dataVal, "Id", "SeriesName", bestResult);
return new SelectList(dataVal, "Id", "SeriesName", dataVal[0].Id);
}
}

View File

@ -26,7 +26,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
<PlatformTarget>AnyCPU</PlatformTarget>
<PublishDatabases>false</PublishDatabases>
<MvcBuildViews>true</MvcBuildViews>
<EnableUpdateable>false</EnableUpdateable>
@ -809,15 +809,7 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>21704</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost/NzbDrone</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>http://localhost:8989</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
<SaveServerSettingsInUserFile>True</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>

View File

@ -11,7 +11,7 @@ $(function () {
function refreshNotifications() {
$.ajax({
url: '/Notification',
url: 'Notification',
success: notificationCallback
});
}

View File

@ -7,7 +7,7 @@
@{Html.Telerik().ComboBox()
.Name("seriesList_" + ViewData["guid"].ToString())
.BindTo(Model)
.DataBinding(binding => binding.Ajax().Select("_textLookUp", "AddSeries").Delay(400).Cache(false))
.DataBinding(binding => binding.Ajax().Select("_textLookUp", "AddSeries").Delay(400))
.Filterable(f => f.FilterMode(AutoCompleteFilterMode.Contains))
.HighlightFirstMatch(true)
.HtmlAttributes(new { style = "width: 300px;" })

View File

@ -33,7 +33,7 @@
<div style="padding-top: 10px;">
<div style="padding-left: 7px; margin-bottom: 5px;">
<a id="addItem" style="text-decoration:none;" href="<%: Url.Action("AddRootDir", "Settings") %>">
<img src="../../Content/Images/Plus.png" alt="Add New Profile" />
<img src="../Content/Images/Plus.png" alt="Add New Profile" />
<h4 style="margin-left: 3px; display: inline; color: Black;">Add New Root Directory</h4></a>
</div>

View File

@ -18,7 +18,7 @@
<div>
<%: Html.TextBoxFor(m => m.Path, new { @class="root_dir_text" }) %>
<a href="#" class="deleteRow">
<img src="../../Content/Images/X.png" alt="Delete" /></a>
<img src="../Content/Images/X.png" alt="Delete" /></a>
</div>
<div>
<%: Html.ValidationMessageFor(m => m.Path) %>

View File

@ -5,6 +5,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head runat="server">
<link rel="SHORTCUT ICON" href="../../favicon.ico">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>NZBDrone</title>
<%

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
@ -18,10 +18,7 @@
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<pages validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<controls>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
@ -45,11 +42,13 @@
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"></modules>
<handlers>
<remove name="MvcHttpHandler"/>
<remove name="UrlRoutingHandler" />
<remove name="asset" />
<add name="asset" preCondition="integratedMode" verb="GET,HEAD" path="asset.axd" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc" />
<add name="MvcHttpHandler" preCondition="integratedMode" verb="" path=".mvc" type="System.Web.Mvc.MvcHttpHandler"/>
</handlers>
<directoryBrowse enabled="true" />
<directoryBrowse enabled="false" />
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<runtime>

View File

@ -55,7 +55,6 @@ Global
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x64.ActiveCfg = Debug|Any CPU
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x86.ActiveCfg = Debug|Any CPU
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x86.Build.0 = Debug|Any CPU

Binary file not shown.

Binary file not shown.

BIN
packages/Unity.2.0/Unity.2.0.nupkg vendored Normal file

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,716 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Practices.Unity.Interception.Configuration</name>
</assembly>
<members>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.AddInterfaceElement">
<summary>
Configuration element that lets you specify additional interfaces
to add when this type is intercepted.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.AddInterfaceElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.AddInterfaceElement.GetInjectionMembers(Microsoft.Practices.Unity.IUnityContainer,System.Type,System.Type,System.String)">
<summary>
Return the set of <see cref="T:Microsoft.Practices.Unity.InjectionMember"/>s that are needed
to configure the container according to this configuration element.
</summary>
<param name="container">Container that is being configured.</param>
<param name="fromType">Type that is being registered.</param>
<param name="toType">Type that <paramref name="fromType"/> is being mapped to.</param>
<param name="name">Name this registration is under.</param>
<returns>One or more <see cref="T:Microsoft.Practices.Unity.InjectionMember"/> objects that should be
applied to the container registration.</returns>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.AddInterfaceElement.TypeName">
<summary>
Type of interface to add.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.AddInterfaceElement.Key">
<summary>
Each element must have a unique key, which is generated by the subclasses.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.CallHandlerElement">
<summary>
Configuration element representing a call handler.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyChildElement">
<summary>
Base class for the two children of the Policy element:
MatchingRuleElement and CallHandlerElement.
</summary>
<remarks>
<para>
These configuration elements have a required "name" attribute, an optional "type" attribute, and
optional child elements &lt;lifetime&gt; and &lt;injection&gt;
</para>
<para>
Elements without a value for the type attribute can only have a value for the name attribute, and
indicate that the represented handler or rule is configured elsewhere and that a reference to
the given name must be added to the policy to be resolved, while elements with a value for the type
attribute indicate how the represented handler or rule should be built and can optionally specify
lifetime management and injection configuration.
</para>
<para>
This element is similar to the <see cref="T:Microsoft.Practices.Unity.Configuration.RegisterElement"/>, except that it does not provide
an extension point for arbitrary configuration.
</para>
</remarks>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyChildElement.DeserializeElement(System.Xml.XmlReader,System.Boolean)">
<summary>
Reads XML from the configuration file.
</summary>
<param name="reader">The <see cref="T:System.Xml.XmlReader"/> that reads from the configuration file.
</param><param name="serializeCollectionKey">true to serialize only the collection key properties; otherwise, false.
</param><exception cref="T:System.Configuration.ConfigurationErrorsException">The element to read is locked.
- or -
An attribute of the current node is not recognized.
- or -
The lock status of the current node cannot be determined.
</exception>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyChildElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyChildElement.Name">
<summary>
Name of this item
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyChildElement.TypeName">
<summary>
Type that implements this matching rule or call handler.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyChildElement.Injection">
<summary>
Injection members that control how this item is created.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyChildElement.Lifetime">
<summary>
Lifetime manager for this item.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.CallHandlerElementCollection">
<summary>
A collection of <see cref="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.CallHandlerElement"/>s for configuration.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.CallHandlerElementCollection.GetElementKey(System.Configuration.ConfigurationElement)">
<summary>
Gets the element key for a specified configuration element when overridden in a derived class.
</summary>
<returns>
An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>.
</returns>
<param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.
</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.CallHandlerElementCollection.OnDeserializeUnrecognizedElement(System.String,System.Xml.XmlReader)">
<summary>
Causes the configuration system to throw an exception.
</summary>
<returns>
true if the unrecognized element was deserialized successfully; otherwise, false. The default is false.
</returns>
<param name="elementName">The name of the unrecognized element.
</param><param name="reader">An input stream that reads XML from the configuration file.
</param><exception cref="T:System.Configuration.ConfigurationErrorsException">The element specified in <paramref name="elementName"/> is the &lt;clear&gt; element.
</exception><exception cref="T:System.ArgumentException"><paramref name="elementName"/> starts with the reserved prefix "config" or "lock".
</exception>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.CallHandlerElementCollection.Item(System.String)">
<summary>
Retrieve a call handler element from the collection by name.
</summary>
<param name="name">Name to look up.</param>
<returns>The rule, or null if not in the collection.</returns>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.DefaultElement">
<summary>
The &lt;default&gt; element that appears inside an &lt;interceptor&gt; element.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElement">
<summary>
Base class for the default and key elements that can occur
inside the &lt;interceptor&gt; element.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElement.RegisterInterceptor(Microsoft.Practices.Unity.IUnityContainer,Microsoft.Practices.Unity.InterceptionExtension.IInterceptor)">
<summary>
Actually register the interceptor against this type.
</summary>
<param name="container">Container to configure.</param>
<param name="interceptor">interceptor to register.</param>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElement.TypeName">
<summary>
Type name that this interceptor will be registered for.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElement.ResolvedType">
<summary>
Return the type object that is resolved from the <see cref="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElement.TypeName"/> property.
</summary>
<returns>The type object.</returns>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.DefaultElement.RegisterInterceptor(Microsoft.Practices.Unity.IUnityContainer,Microsoft.Practices.Unity.InterceptionExtension.IInterceptor)">
<summary>
Actually register the interceptor against this type.
</summary>
<param name="container">Container to configure.</param>
<param name="interceptor">interceptor to register.</param>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement">
<summary>
Configuration elmement for specifying
interception behaviors for a type.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement.DeserializeElement(System.Xml.XmlReader,System.Boolean)">
<summary>
Reads XML from the configuration file.
</summary>
<param name="reader">The <see cref="T:System.Xml.XmlReader"/> that reads from the configuration file.
</param><param name="serializeCollectionKey">true to serialize only the collection key properties; otherwise, false.
</param><exception cref="T:System.Configuration.ConfigurationErrorsException">The element to read is locked.
- or -
An attribute of the current node is not recognized.
- or -
The lock status of the current node cannot be determined.
</exception>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement.GetInjectionMembers(Microsoft.Practices.Unity.IUnityContainer,System.Type,System.Type,System.String)">
<summary>
Return the set of <see cref="T:Microsoft.Practices.Unity.InjectionMember"/>s that are needed
to configure the container according to this configuration element.
</summary>
<param name="container">Container that is being configured.</param>
<param name="fromType">Type that is being registered.</param>
<param name="toType">Type that <paramref name="fromType"/> is being mapped to.</param>
<param name="name">Name this registration is under.</param>
<returns>One or more <see cref="T:Microsoft.Practices.Unity.InjectionMember"/> objects that should be
applied to the container registration.</returns>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement.TypeName">
<summary>
Type of behavior to add.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement.Name">
<summary>
Name of behavior to resolve.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement.IsDefaultForType">
<summary>
Should this behavior be configured as a default behavior for this type, or
specifically for this type/name pair only?
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionBehaviorElement.Key">
<summary>
Each element must have a unique key, which is generated by the subclasses.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension">
<summary>
Section extension class used to add the elements needed to configure
Unity interception to the configuration schema.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension.AddExtensions(Microsoft.Practices.Unity.Configuration.SectionExtensionContext)">
<summary>
Add the extensions to the section via the context.
</summary>
<param name="context">Context object that can be used to add elements and aliases.</param>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionElement">
<summary>
A configuration element that contains the top-level container configuration
information for interception - handler policies and global interceptor definitions.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionElement.OnDeserializeUnrecognizedElement(System.String,System.Xml.XmlReader)">
<summary>
Gets a value indicating whether an unknown element is encountered during deserialization.
</summary>
<returns>
true when an unknown element is encountered while deserializing; otherwise, false.
</returns>
<param name="elementName">The name of the unknown subelement.
</param><param name="reader">The <see cref="T:System.Xml.XmlReader"/> being used for deserialization.
</param><exception cref="T:System.Configuration.ConfigurationErrorsException">The element identified by <paramref name="elementName"/> is locked.
- or -
One or more of the element's attributes is locked.
- or -
<paramref name="elementName"/> is unrecognized, or the element has an unrecognized attribute.
- or -
The element has a Boolean attribute with an invalid value.
- or -
An attempt was made to deserialize a property more than once.
- or -
An attempt was made to deserialize a property that is not a valid member of the element.
- or -
The element cannot contain a CDATA or text element.
</exception>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionElement.ConfigureContainer(Microsoft.Practices.Unity.IUnityContainer)">
<summary>
Apply this element's configuration to the given <paramref name="container"/>.
</summary>
<param name="container">Container to configure.</param>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionElement.Policies">
<summary>
Policies defined for this container.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement">
<summary>
Configuration element that lets you configure
what interceptor to use for a type.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement.#ctor">
<summary>
Initialize a new <see cref="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement"/>.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement.GetInjectionMembers(Microsoft.Practices.Unity.IUnityContainer,System.Type,System.Type,System.String)">
<summary>
Return the set of <see cref="T:Microsoft.Practices.Unity.InjectionMember"/>s that are needed
to configure the container according to this configuration element.
</summary>
<param name="container">Container that is being configured.</param>
<param name="fromType">Type that is being registered.</param>
<param name="toType">Type that <paramref name="fromType"/> is being mapped to.</param>
<param name="name">Name this registration is under.</param>
<returns>One or more <see cref="T:Microsoft.Practices.Unity.InjectionMember"/> objects that should be
applied to the container registration.</returns>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement.TypeName">
<summary>
Type name for the interceptor to apply.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement.Name">
<summary>
Name to use when resolving interceptors from the container.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement.IsDefaultForType">
<summary>
Should this interceptor be registered as the default for the contained
type, or only for this particular type/name pair?
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorElement.Key">
<summary>
Each element must have a unique key, which is generated by the subclasses.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElementCollection">
<summary>
A collection of <see cref="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElement"/> objects as shown
in configuration.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElementCollection.CreateNewElement">
<summary>
When overridden in a derived class, creates a new <see cref="T:System.Configuration.ConfigurationElement"/>.
</summary>
<returns>
A new <see cref="T:System.Configuration.ConfigurationElement"/>.
</returns>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorRegistrationElementCollection.GetElementKey(System.Configuration.ConfigurationElement)">
<summary>
Gets the element key for a specified configuration element when overridden in a derived class.
</summary>
<returns>
An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>.
</returns>
<param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.
</param>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsElement">
<summary>
Configuration element that provides a top-level element for
configuration interceptors for types in a container.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsElement.ConfigureContainer(Microsoft.Practices.Unity.IUnityContainer)">
<summary>
Apply this element's configuration to the given <paramref name="container"/>.
</summary>
<param name="container">Container to configure.</param>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsElement.Interceptors">
<summary>
The various child elements that are contained in this element.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement">
<summary>
Configuration element that represents the configuration for
a specific interceptor, as presented in the config file inside
the &lt;interceptors&gt; element.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement.OnDeserializeUnrecognizedElement(System.String,System.Xml.XmlReader)">
<summary>
Gets a value indicating whether an unknown element is encountered during deserialization.
</summary>
<returns>
true when an unknown element is encountered while deserializing; otherwise, false.
</returns>
<param name="elementName">The name of the unknown subelement.
</param><param name="reader">The <see cref="T:System.Xml.XmlReader"/> being used for deserialization.
</param><exception cref="T:System.Configuration.ConfigurationErrorsException">The element identified by <paramref name="elementName"/> is locked.
- or -
One or more of the element's attributes is locked.
- or -
<paramref name="elementName"/> is unrecognized, or the element has an unrecognized attribute.
- or -
The element has a Boolean attribute with an invalid value.
- or -
An attempt was made to deserialize a property more than once.
- or -
An attempt was made to deserialize a property that is not a valid member of the element.
- or -
The element cannot contain a CDATA or text element.
</exception>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement.TypeName">
<summary>
Type of interceptor to configure.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement.Registrations">
<summary>
The types that this interceptor will be registered against.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement.Value">
<summary>
Any value passed to the type converter.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement.TypeConverterTypeName">
<summary>
Type converter to use to create the interceptor, if any.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElementCollection">
<summary>
A collection of <see cref="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElement"/> objects
as stored in configuration.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptorsInterceptorElementCollection.GetElementKey(System.Configuration.ConfigurationElement)">
<summary>
Gets the element key for a specified configuration element when overridden in a derived class.
</summary>
<returns>
An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>.
</returns>
<param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.
</param>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.KeyElement">
<summary>
The &lt;key&gt; element that occurs inside an &lt;interceptor&gt; element
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.KeyElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.KeyElement.RegisterInterceptor(Microsoft.Practices.Unity.IUnityContainer,Microsoft.Practices.Unity.InterceptionExtension.IInterceptor)">
<summary>
Actually register the interceptor against this type.
</summary>
<param name="container">Container to configure.</param>
<param name="interceptor">interceptor to register.</param>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.KeyElement.Name">
<summary>
Name registration should be under. To register under the default, leave blank.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.MatchingRuleElement">
<summary>
A configuration element representing a matching rule.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.MatchingRuleElementCollection">
<summary>
A collection of <see cref="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.MatchingRuleElement"/>s for configuration.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.MatchingRuleElementCollection.GetElementKey(System.Configuration.ConfigurationElement)">
<summary>
Gets the element key for a specified configuration element when overridden in a derived class.
</summary>
<returns>
An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>.
</returns>
<param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.
</param>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.MatchingRuleElementCollection.OnDeserializeUnrecognizedElement(System.String,System.Xml.XmlReader)">
<summary>
Causes the configuration system to throw an exception.
</summary>
<returns>
true if the unrecognized element was deserialized successfully; otherwise, false. The default is false.
</returns>
<param name="elementName">The name of the unrecognized element.
</param><param name="reader">An input stream that reads XML from the configuration file.
</param><exception cref="T:System.Configuration.ConfigurationErrorsException">The element specified in <paramref name="elementName"/> is the &lt;clear&gt; element.
</exception><exception cref="T:System.ArgumentException"><paramref name="elementName"/> starts with the reserved prefix "config" or "lock".
</exception>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.MatchingRuleElementCollection.Item(System.String)">
<summary>
Retrieve a matching rule element from the collection by name.
</summary>
<param name="name">Name to look up.</param>
<returns>The rule, or null if not in the collection.</returns>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElement">
<summary>
Configuration element for building up an interception policy.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElement.OnDeserializeUnrecognizedElement(System.String,System.Xml.XmlReader)">
<summary>
Gets a value indicating whether an unknown element is encountered during deserialization.
</summary>
<returns>
true when an unknown element is encountered while deserializing; otherwise, false.
</returns>
<param name="elementName">The name of the unknown subelement.
</param><param name="reader">The <see cref="T:System.Xml.XmlReader"/> being used for deserialization.
</param><exception cref="T:System.Configuration.ConfigurationErrorsException">The element identified by <paramref name="elementName"/> is locked.
- or -
One or more of the element's attributes is locked.
- or -
<paramref name="elementName"/> is unrecognized, or the element has an unrecognized attribute.
- or -
The element has a Boolean attribute with an invalid value.
- or -
An attempt was made to deserialize a property more than once.
- or -
An attempt was made to deserialize a property that is not a valid member of the element.
- or -
The element cannot contain a CDATA or text element.
</exception>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElement.SerializeContent(System.Xml.XmlWriter)">
<summary>
Write the contents of this element to the given <see cref="T:System.Xml.XmlWriter"/>.
</summary>
<remarks>The caller of this method has already written the start element tag before
calling this method, so deriving classes only need to write the element content, not
the start or end tags.</remarks>
<param name="writer">Writer to send XML content to.</param>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElement.Name">
<summary>
Name of this policy.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElement.MatchingRules">
<summary>
Matching rules for this policy.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElement.CallHandlers">
<summary>
Call handlers for this policy.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElementCollection">
<summary>
A collection of <see cref="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElement"/> in the configuration.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElementCollection.GetElementKey(System.Configuration.ConfigurationElement)">
<summary>
Gets the element key for a specified configuration element when overridden in a derived class.
</summary>
<returns>
An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>.
</returns>
<param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.
</param>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyElementCollection.Item(System.String)">
<summary>
Indexer to retrieve policy element objects by name.
</summary>
<param name="policyName">Name of policy to get.</param>
<returns>The element.</returns>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyInjectionElement">
<summary>
A shortcut element to enable the policy injection behavior.
</summary>
</member>
<member name="M:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyInjectionElement.GetInjectionMembers(Microsoft.Practices.Unity.IUnityContainer,System.Type,System.Type,System.String)">
<summary>
Return the set of <see cref="T:Microsoft.Practices.Unity.InjectionMember"/>s that are needed
to configure the container according to this configuration element.
</summary>
<param name="container">Container that is being configured.</param>
<param name="fromType">Type that is being registered.</param>
<param name="toType">Type that <paramref name="fromType"/> is being mapped to.</param>
<param name="name">Name this registration is under.</param>
<returns>One or more <see cref="T:Microsoft.Practices.Unity.InjectionMember"/> objects that should be
applied to the container registration.</returns>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.PolicyInjectionElement.Key">
<summary>
Each element must have a unique key, which is generated by the subclasses.
</summary>
</member>
<member name="T:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.CannotCreateInterceptorRegistrationElement">
<summary>
Looks up a localized string similar to The abstract type InterceptorRegistrationElement cannot be created. Please create a concrete instance..
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.CannotHaveInjectionWithoutTypeName">
<summary>
Looks up a localized string similar to The &lt;injection/&gt; element is not allowed on element named &apos;{0}&apos; because it doesn&apos;t have a type attribute..
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.CannotHaveLifetimeWithoutTypeName">
<summary>
Looks up a localized string similar to The &lt;lifetime/&gt; element is not allowed on element named &apos;{0}&apos; because it doesn&apos;t have a type attribute..
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.CouldNotResolveType">
<summary>
Looks up a localized string similar to The type name or alias {0} could not be resolved. Please check your configuration file and verify this type name..
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.ExceptionCannotCreateInstance">
<summary>
Looks up a localized string similar to Cannot create instance of type {0} with a default constructor..
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.ExceptionResolvedTypeNotCompatible">
<summary>
Looks up a localized string similar to The type name {0} resolved to type {1} is not compatible with the required type {2}..
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.InvalidInterceptorType">
<summary>
Looks up a localized string similar to The type {0} could not be resolved to a valid type. Please double check your configuration..
</summary>
</member>
<member name="P:Microsoft.Practices.Unity.InterceptionExtension.Configuration.Properties.Resources.MustHaveAtLeastOneBehaviorAttribute">
<summary>
Looks up a localized string similar to The interception behavior element must have at least one of the &apos;name&apos; or &apos;type&apos; attributes..
</summary>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff