2013-04-26 19:03:34 -07:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
|
|
|
using NzbDrone.Api.Extensions;
|
2013-05-12 17:36:23 -07:00
|
|
|
using NzbDrone.Common.Composition;
|
2013-04-26 19:03:34 -07:00
|
|
|
using NzbDrone.Common.Messaging;
|
|
|
|
|
|
|
|
namespace NzbDrone.Api.Commands
|
|
|
|
{
|
|
|
|
public class CommandModule : NzbDroneRestModule<CommandResource>
|
|
|
|
{
|
|
|
|
private readonly IMessageAggregator _messageAggregator;
|
2013-05-12 17:36:23 -07:00
|
|
|
private readonly IContainer _container;
|
2013-04-26 19:03:34 -07:00
|
|
|
|
2013-05-12 17:36:23 -07:00
|
|
|
public CommandModule(IMessageAggregator messageAggregator, IContainer container)
|
2013-04-26 19:03:34 -07:00
|
|
|
{
|
|
|
|
_messageAggregator = messageAggregator;
|
2013-05-12 17:36:23 -07:00
|
|
|
_container = container;
|
2013-04-26 19:03:34 -07:00
|
|
|
|
|
|
|
CreateResource = RunCommand;
|
|
|
|
}
|
|
|
|
|
|
|
|
private CommandResource RunCommand(CommandResource resource)
|
|
|
|
{
|
2013-05-12 17:36:23 -07:00
|
|
|
var commandType =
|
|
|
|
_container.GetImplementations(typeof(ICommand))
|
|
|
|
.Single(c => c.Name.Replace("Command", "")
|
2013-05-12 19:52:55 -07:00
|
|
|
.Equals(resource.Command, StringComparison.InvariantCultureIgnoreCase));
|
2013-04-26 19:03:34 -07:00
|
|
|
|
2013-05-20 20:20:29 -07:00
|
|
|
dynamic command = Request.Body.FromJson(commandType);
|
2013-05-07 22:47:15 -07:00
|
|
|
_messageAggregator.PublishCommand(command);
|
|
|
|
|
|
|
|
return resource;
|
2013-04-26 19:03:34 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|