diff --git a/src/SbManager.Tests/Models/ViewModelBuilders/QueueModelBuilderTests.cs b/src/SbManager.Tests/Models/ViewModelBuilders/QueueModelBuilderTests.cs index 86ee2cf..589be77 100644 --- a/src/SbManager.Tests/Models/ViewModelBuilders/QueueModelBuilderTests.cs +++ b/src/SbManager.Tests/Models/ViewModelBuilders/QueueModelBuilderTests.cs @@ -25,7 +25,7 @@ public void CanGetQueue() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(false)) - .When(x => x.WhenBuildingModel("testqueue", false)) + .When(x => x.WhenBuildingModel("testqueue")) .Then(x => x.ThenTheQueueIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -36,7 +36,7 @@ public void CanGetQueueWithCaseInsensitiveMatch() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(false)) - .When(x => x.WhenBuildingModel("testQUeuE", false)) + .When(x => x.WhenBuildingModel("testQUeuE")) .Then(x => x.ThenTheQueueIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -47,7 +47,7 @@ public void CanGetQueueWithForceFresh() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(true)) - .When(x => x.WhenBuildingModel("testqueue", true)) + .When(x => x.WhenBuildingModel("testqueue")) .Then(x => x.ThenTheQueueIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -58,7 +58,7 @@ public void WillFailOnDuplicateQueues() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverviewWithDuplicateQueues()) - .When(x => x.WhenBuildingModel("testqueue", true)) + .When(x => x.WhenBuildingModel("testqueue")) .Then(x => x.ThenThereShouldBeAnException()) .BDDfy(); } @@ -90,11 +90,11 @@ void GivenThatTheBusMonitorReturnsAnOverviewWithDuplicateQueues() _busMonitor.GetOverview().Returns(overview); } - async Task WhenBuildingModel(string queuename, bool forceFresh) + async Task WhenBuildingModel(string queuename) { try { - _result = await _builder.Build(new QueueCriteria(queuename, forceFresh)); + _result = await _builder.Build(new QueueCriteria(queuename)); } catch (Exception ex) { diff --git a/src/SbManager.Tests/Models/ViewModelBuilders/SubscriptionModelBuilderTests.cs b/src/SbManager.Tests/Models/ViewModelBuilders/SubscriptionModelBuilderTests.cs index 782f4b6..6b001e2 100644 --- a/src/SbManager.Tests/Models/ViewModelBuilders/SubscriptionModelBuilderTests.cs +++ b/src/SbManager.Tests/Models/ViewModelBuilders/SubscriptionModelBuilderTests.cs @@ -25,7 +25,7 @@ public void CanGetSubscription() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(false)) - .When(x => x.WhenBuildingModel("testtopic", "testsubscription", false)) + .When(x => x.WhenBuildingModel("testtopic", "testsubscription")) .Then(x => x.ThenTheSubscriptionIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -36,7 +36,7 @@ public void CanGetSubscriptionWithCaseInsensitiveMatch() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(false)) - .When(x => x.WhenBuildingModel("testtopic", "testSuBscription", false)) + .When(x => x.WhenBuildingModel("testtopic", "testSuBscription")) .Then(x => x.ThenTheSubscriptionIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -47,7 +47,7 @@ public void CanGetSubscriptionWithForceFresh() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(true)) - .When(x => x.WhenBuildingModel("testtopic", "testsubscription", true)) + .When(x => x.WhenBuildingModel("testtopic", "testsubscription")) .Then(x => x.ThenTheSubscriptionIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -58,7 +58,7 @@ public void WillFailOnDuplicateSubscriptions() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverviewWithDuplicateSubscriptions()) - .When(x => x.WhenBuildingModel("testtopic", "testsubscription", false)) + .When(x => x.WhenBuildingModel("testtopic", "testsubscription")) .Then(x => x.ThenThereShouldBeAnException()) .BDDfy(); } @@ -96,11 +96,11 @@ void GivenThatTheBusMonitorReturnsAnOverviewWithDuplicateSubscriptions() _busMonitor.GetOverview().Returns(overview); } - async Task WhenBuildingModel(string topicname, string subscriptionname, bool forceFresh) + async Task WhenBuildingModel(string topicname, string subscriptionname) { try { - _result = await _builder.Build(new SubscriptionCriteria(topicname, subscriptionname, forceFresh)); + _result = await _builder.Build(new SubscriptionCriteria(topicname, subscriptionname)); } catch (Exception ex) { diff --git a/src/SbManager.Tests/Models/ViewModelBuilders/TopicModelBuilderTests.cs b/src/SbManager.Tests/Models/ViewModelBuilders/TopicModelBuilderTests.cs index aa87c75..4193863 100644 --- a/src/SbManager.Tests/Models/ViewModelBuilders/TopicModelBuilderTests.cs +++ b/src/SbManager.Tests/Models/ViewModelBuilders/TopicModelBuilderTests.cs @@ -25,7 +25,7 @@ public void CanGetTopic() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(false)) - .When(x => x.WhenBuildingModel("testtopic", false)) + .When(x => x.WhenBuildingModel("testtopic")) .Then(x => x.ThenTheTopicIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -36,7 +36,7 @@ public void CanGetTopicWithCaseInsensitiveMatch() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(false)) - .When(x => x.WhenBuildingModel("testToPiC", false)) + .When(x => x.WhenBuildingModel("testToPiC")) .Then(x => x.ThenTheTopicIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -47,7 +47,7 @@ public void CanGetTopicWithForceFresh() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverview(true)) - .When(x => x.WhenBuildingModel("testtopic", true)) + .When(x => x.WhenBuildingModel("testtopic")) .Then(x => x.ThenTheTopicIsReturned()) .Then(x => x.ThenThereShouldBeNoException()) .BDDfy(); @@ -58,7 +58,7 @@ public void WillFailOnDuplicateTopics() { this.Given(x => x.GivenABuilder()) .And(x => x.GivenThatTheBusMonitorReturnsAnOverviewWithDuplicateTopics()) - .When(x => x.WhenBuildingModel("testtopic", true)) + .When(x => x.WhenBuildingModel("testtopic")) .Then(x => x.ThenThereShouldBeAnException()) .BDDfy(); } @@ -96,11 +96,11 @@ void GivenThatTheBusMonitorReturnsAnOverviewWithDuplicateTopics() _busMonitor.GetOverview().Returns(overview); } - async Task WhenBuildingModel(string topicname, bool forceFresh) + async Task WhenBuildingModel(string topicname) { try { - _result = await _builder.Build(new TopicCriteria(topicname, forceFresh)); + _result = await _builder.Build(new TopicCriteria(topicname)); } catch (Exception ex) { diff --git a/src/SbManager/BusHelpers/BusMonitor.cs b/src/SbManager/BusHelpers/BusMonitor.cs index dd61b79..35f4735 100644 --- a/src/SbManager/BusHelpers/BusMonitor.cs +++ b/src/SbManager/BusHelpers/BusMonitor.cs @@ -11,6 +11,9 @@ namespace SbManager.BusHelpers public interface IBusMonitor { Task GetOverview(bool fresh = false); + Task GetQueue(string queueName); + Task GetTopic(string topicName); + Task GetSubscription(string topicName, string subscriptionName); } public class BusMonitor : IBusMonitor { @@ -43,72 +46,58 @@ public async Task GetOverview(bool forceDirty = false) return _cached; } + public Task GetQueue(string queueName) + { + var queue = MapQueue(_namespaceManager.GetQueue(queueName)); + return Task.FromResult(queue); + } + + public Task GetTopic(string topicName) + { + var topic = MapTopic(_namespaceManager.GetTopic(topicName)); + FillTopic(topic); + return Task.FromResult(topic); + } + + public Task GetSubscription(string topicName, string subscriptionName) + { + var subscription = MapSubscription(topicName, _namespaceManager.GetSubscription(topicName, subscriptionName)); + FillSubscription(subscription, topicName); + return Task.FromResult(subscription); + } + + private void FillTopic(Topic topic) + { + topic.Subscriptions = _namespaceManager.GetSubscriptions(topic.Name).Select(e => MapSubscription(topic.Name, e)).ToList(); + + foreach (var subscription in topic.Subscriptions) + { + FillSubscription(subscription, topic.Name); + } + + topic.ActiveMessageCount = topic.Subscriptions.Sum(s => s.ActiveMessageCount); + topic.DeadLetterCount = topic.Subscriptions.Sum(s => s.DeadLetterCount); + topic.ScheduledMessageCount = topic.Subscriptions.Sum(s => s.ScheduledMessageCount); + topic.TransferMessageCount = topic.Subscriptions.Sum(s => s.TransferMessageCount); + topic.DeadTransferMessageCount = topic.Subscriptions.Sum(s => s.DeadTransferMessageCount); + } + + private void FillSubscription(Subscription subscription, string topicName) + { + subscription.Rules = _namespaceManager.GetRules(topicName, subscription.Name).Select(MapRule).ToList(); + } + private Task Fetch() { var overview = new Overview { - Queues = _namespaceManager.GetQueues().Select(e => new Queue - { - Status = e.Status.ToString(), - ActiveMessageCount = e.CountDetails.ActiveMessageCount, - DeadLetterCount = e.CountDetails.DeadLetterMessageCount, - ScheduledMessageCount = e.CountDetails.ScheduledMessageCount, - TransferMessageCount = e.CountDetails.TransferMessageCount, - DeadTransferMessageCount = e.CountDetails.TransferDeadLetterMessageCount, - SizeInBytes = e.SizeInBytes, - AutoDeleteOnIdle = new Time(e.AutoDeleteOnIdle), - DefaultMessageTTL = new Time(e.DefaultMessageTimeToLive), - DuplicateDetectionWindow = new Time(e.DuplicateDetectionHistoryTimeWindow), - LockDuration = new Time(e.LockDuration), - CreatedAt = e.CreatedAt, - UpdatedAt = e.UpdatedAt, - AccessedAt = e.AccessedAt, - Name = e.Path - }).ToList(), - Topics = _namespaceManager.GetTopics().Select(e => new Topic - { - Status = e.Status.ToString(), - Name = e.Path, - SizeInBytes = e.SizeInBytes, - AutoDeleteOnIdle = new Time(e.AutoDeleteOnIdle), - DefaultMessageTTL = new Time(e.DefaultMessageTimeToLive), - DuplicateDetectionWindow = new Time(e.DuplicateDetectionHistoryTimeWindow), - CreatedAt = e.CreatedAt, - UpdatedAt = e.UpdatedAt, - //AccessedAt = e.AccessedAt, - }).ToList(), + Queues = _namespaceManager.GetQueues().Select(MapQueue).ToList(), + Topics = _namespaceManager.GetTopics().Select(MapTopic).ToList() }; foreach (var topic in overview.Topics) { - topic.Subscriptions = _namespaceManager.GetSubscriptions(topic.Name).Select(e => new Subscription - { - Status = e.Status.ToString(), - Name = e.Name, - TopicName = topic.Name, - //ActiveMessageCount = e.CountDetails.ActiveMessageCount, - //DeadLetterCount = e.CountDetails.DeadLetterMessageCount, - //ScheduledMessageCount = e.CountDetails.ScheduledMessageCount, - //TransferMessageCount = e.CountDetails.TransferMessageCount, - //DeadTransferMessageCount = e.CountDetails.TransferDeadLetterMessageCount, - AutoDeleteOnIdle = new Time(e.AutoDeleteOnIdle), - DefaultMessageTTL = new Time(e.DefaultMessageTimeToLive), - LockDuration = new Time(e.LockDuration), - CreatedAt = e.CreatedAt, - UpdatedAt = e.UpdatedAt, - AccessedAt = e.AccessedAt, - }).ToList(); - - foreach (var subscription in topic.Subscriptions) - { - subscription.Rules = _namespaceManager.GetRules(topic.Name, subscription.Name).Select(MapRule).ToList(); - } - - topic.ActiveMessageCount = topic.Subscriptions.Sum(s => s.ActiveMessageCount); - topic.DeadLetterCount = topic.Subscriptions.Sum(s => s.DeadLetterCount); - topic.ScheduledMessageCount = topic.Subscriptions.Sum(s => s.ScheduledMessageCount); - topic.TransferMessageCount = topic.Subscriptions.Sum(s => s.TransferMessageCount); - topic.DeadTransferMessageCount = topic.Subscriptions.Sum(s => s.DeadTransferMessageCount); + FillTopic(topic); } var queueMessageCounts = GetCounts(overview.Queues); @@ -145,7 +134,66 @@ private bool Dirty(bool forceDirty) return forceDirty || (GetTime() > _lastTouch.AddMilliseconds(RefreshTime)); } - private Rule MapRule(RuleDescription r) + private static Queue MapQueue(QueueDescription queue) + { + return new Queue + { + Status = queue.Status.ToString(), + ActiveMessageCount = queue.CountDetails.ActiveMessageCount, + DeadLetterCount = queue.CountDetails.DeadLetterMessageCount, + ScheduledMessageCount = queue.CountDetails.ScheduledMessageCount, + TransferMessageCount = queue.CountDetails.TransferMessageCount, + DeadTransferMessageCount = queue.CountDetails.TransferDeadLetterMessageCount, + SizeInBytes = queue.SizeInBytes, + AutoDeleteOnIdle = new Time(queue.AutoDeleteOnIdle), + DefaultMessageTTL = new Time(queue.DefaultMessageTimeToLive), + DuplicateDetectionWindow = new Time(queue.DuplicateDetectionHistoryTimeWindow), + LockDuration = new Time(queue.LockDuration), + CreatedAt = queue.CreatedAt, + UpdatedAt = queue.UpdatedAt, + AccessedAt = queue.AccessedAt, + Name = queue.Path + }; + } + + private static Topic MapTopic(TopicDescription topic) + { + return new Topic + { + Status = topic.Status.ToString(), + Name = topic.Path, + SizeInBytes = topic.SizeInBytes, + AutoDeleteOnIdle = new Time(topic.AutoDeleteOnIdle), + DefaultMessageTTL = new Time(topic.DefaultMessageTimeToLive), + DuplicateDetectionWindow = new Time(topic.DuplicateDetectionHistoryTimeWindow), + CreatedAt = topic.CreatedAt, + UpdatedAt = topic.UpdatedAt, + //AccessedAt = topic.AccessedAt, + }; + } + + private static Subscription MapSubscription(string topicName, SubscriptionDescription subscription) + { + return new Subscription + { + Status = subscription.Status.ToString(), + Name = subscription.Name, + TopicName = topicName, + //ActiveMessageCount = subscription.CountDetails.ActiveMessageCount, + //DeadLetterCount = subscription.CountDetails.DeadLetterMessageCount, + //ScheduledMessageCount = subscription.CountDetails.ScheduledMessageCount, + //TransferMessageCount = subscription.CountDetails.TransferMessageCount, + //DeadTransferMessageCount = subscription.CountDetails.TransferDeadLetterMessageCount, + AutoDeleteOnIdle = new Time(subscription.AutoDeleteOnIdle), + DefaultMessageTTL = new Time(subscription.DefaultMessageTimeToLive), + LockDuration = new Time(subscription.LockDuration), + CreatedAt = subscription.CreatedAt, + UpdatedAt = subscription.UpdatedAt, + AccessedAt = subscription.AccessedAt, + }; + } + + private static Rule MapRule(RuleDescription r) { if (r.Filter is SqlFilter) { diff --git a/src/SbManager/HttpModules/V1/BusManagerModule.cs b/src/SbManager/HttpModules/V1/BusManagerModule.cs index 4562caf..2dcad0a 100644 --- a/src/SbManager/HttpModules/V1/BusManagerModule.cs +++ b/src/SbManager/HttpModules/V1/BusManagerModule.cs @@ -42,7 +42,7 @@ public BusManagerModule(IRequeueAndRemove requeueAndRemove, IModelCreator modelC Get["/queue/{qid}", true] = async (_, ct) => await _modelCreator.Build(new QueueCriteria(To.String((object)_.qid))); Get["/topic/{tid}/{sid}", true] = - async (_, ct) => await _modelCreator.Build(new SubscriptionCriteria(To.String((object)_.tid), To.String((object)_.sid), true)); + async (_, ct) => await _modelCreator.Build(new SubscriptionCriteria(To.String((object)_.tid), To.String((object)_.sid))); Get["queue/{qid}/messages/{count}", true] = async (_, ct) => await _modelCreator.Build(new FindQueuedMessages(To.String((object)_.qid).UnescapePathName(), To.Int(_.count))); Get["topic/{tid}/{sid}/messages/{count}", true] = @@ -51,27 +51,27 @@ public BusManagerModule(IRequeueAndRemove requeueAndRemove, IModelCreator modelC { var qid = To.String((object)_.qid).UnescapePathName(); await _requeueAndRemove.RequeueAll(qid); - return _modelCreator.Build(new QueueCriteria(qid.RemoveDeadLetterPath(), true)); + return _modelCreator.Build(new QueueCriteria(qid.RemoveDeadLetterPath())); }; Post["/topic/{tid}/{sid}/requeue/all", true] = async (_, ct) => { var tid = To.String((object)_.tid); var sid = To.String((object)_.sid).UnescapePathName(); await _requeueAndRemove.RequeueAll(tid, sid); - return _modelCreator.Build(new SubscriptionCriteria(tid, sid.RemoveDeadLetterPath(), true)); + return _modelCreator.Build(new SubscriptionCriteria(tid, sid.RemoveDeadLetterPath())); }; Post["/queue/{qid}/remove/all", true] = async (_, ct) => { var qid = To.String((object)_.qid).UnescapePathName(); await _requeueAndRemove.RemoveAll(qid); - return _modelCreator.Build(new QueueCriteria(qid.RemoveDeadLetterPath(), true)); + return _modelCreator.Build(new QueueCriteria(qid.RemoveDeadLetterPath())); }; Post["/topic/{tid}/{sid}/remove/all", true] = async (_, ct) => { var tid = To.String((object)_.tid); var sid = To.String((object)_.sid).UnescapePathName(); await _requeueAndRemove.RemoveAll(tid, sid); - return _modelCreator.Build(new SubscriptionCriteria(tid, sid.RemoveDeadLetterPath(), true)); + return _modelCreator.Build(new SubscriptionCriteria(tid, sid.RemoveDeadLetterPath())); }; Post["queue/{qid}/delete", true] = async (_, ct) => { @@ -99,7 +99,7 @@ public BusManagerModule(IRequeueAndRemove requeueAndRemove, IModelCreator modelC async (_, ct) => { await _commandSender.Send(new DeadLetterAllMessagesCommand(To.String((object)_.qid).UnescapePathName())); - return _modelCreator.Build(new QueueCriteria(To.String((object)_.qid).RemoveDeadLetterPath(), true)); + return _modelCreator.Build(new QueueCriteria(To.String((object)_.qid).RemoveDeadLetterPath())); }; Post["queue/{qid}/requeue", true] = async (_, ct) => { await _commandSender.Send(new RequeueMessageCommand(Request.Form.messageId, To.String((object)_.qid).UnescapePathName())); return new { success = true }; }; @@ -113,7 +113,7 @@ public BusManagerModule(IRequeueAndRemove requeueAndRemove, IModelCreator modelC async (_, ct) => { await _commandSender.Send(new DeadLetterAllMessagesCommand(To.String((object)_.tid), To.String((object)_.sid).UnescapePathName())); - return _modelCreator.Build(new SubscriptionCriteria(To.String((object)_.tid), To.String((object)_.sid).UnescapePathName(), true)); + return _modelCreator.Build(new SubscriptionCriteria(To.String((object)_.tid), To.String((object)_.sid).UnescapePathName())); }; Post["topic/{tid}/{sid}/requeue", true] = async (_, ct) => { await _commandSender.Send(new RequeueMessageCommand(Request.Form.messageId,To.String( _.tid), To.String((object)_.sid).UnescapePathName())); return new { success = true }; }; diff --git a/src/SbManager/Models/ViewModelBuilders/QueueModelBuilder.cs b/src/SbManager/Models/ViewModelBuilders/QueueModelBuilder.cs index 641575b..896ad7e 100644 --- a/src/SbManager/Models/ViewModelBuilders/QueueModelBuilder.cs +++ b/src/SbManager/Models/ViewModelBuilders/QueueModelBuilder.cs @@ -1,6 +1,4 @@ -using System; -using System.Linq; -using System.Threading.Tasks; +using System.Threading.Tasks; using SbManager.BusHelpers; using SbManager.Models.ViewModels; @@ -8,13 +6,11 @@ namespace SbManager.Models.ViewModelBuilders { public class QueueCriteria { - public QueueCriteria(string qid, bool requireFresh = false) + public QueueCriteria(string qid) { Queue = qid; - RequireFresh = requireFresh; } public string Queue { get; set; } - public bool RequireFresh { get; set; } } public class QueueModelBuilder : CQRS.ModelBuilders.IModelBuilderWithCriteria @@ -26,9 +22,9 @@ public QueueModelBuilder(IBusMonitor busMonitor) _busMonitor = busMonitor; } - public async Task Build(QueueCriteria criteria) + public Task Build(QueueCriteria criteria) { - return (await _busMonitor.GetOverview(criteria.RequireFresh)).Queues.Single(q => String.Equals(q.Name, criteria.Queue, StringComparison.CurrentCultureIgnoreCase)); + return _busMonitor.GetQueue(criteria.Queue); } } } diff --git a/src/SbManager/Models/ViewModelBuilders/SubscriptionModelBuilder.cs b/src/SbManager/Models/ViewModelBuilders/SubscriptionModelBuilder.cs index 41a5477..b8cec61 100644 --- a/src/SbManager/Models/ViewModelBuilders/SubscriptionModelBuilder.cs +++ b/src/SbManager/Models/ViewModelBuilders/SubscriptionModelBuilder.cs @@ -1,6 +1,4 @@ -using System; -using System.Linq; -using System.Threading.Tasks; +using System.Threading.Tasks; using SbManager.BusHelpers; using SbManager.Models.ViewModels; @@ -8,15 +6,13 @@ namespace SbManager.Models.ViewModelBuilders { public class SubscriptionCriteria { - public SubscriptionCriteria(string tid, string sid, bool requireFresh = false) + public SubscriptionCriteria(string tid, string sid) { Topic = tid; Subscription = sid; - RequireFresh = requireFresh; } public string Topic { get; set; } public string Subscription { get; set; } - public bool RequireFresh { get; set; } } public class SubscriptionModelBuilder : CQRS.ModelBuilders.IModelBuilderWithCriteria @@ -28,11 +24,9 @@ public SubscriptionModelBuilder(IBusMonitor busMonitor) _busMonitor = busMonitor; } - public async Task Build(SubscriptionCriteria criteria) + public Task Build(SubscriptionCriteria criteria) { - return (await _busMonitor.GetOverview(criteria.RequireFresh)) - .Topics.Single(t => String.Equals(t.Name, criteria.Topic, StringComparison.CurrentCultureIgnoreCase)) - .Subscriptions.Single(s => String.Equals(s.Name, criteria.Subscription, StringComparison.CurrentCultureIgnoreCase)); + return _busMonitor.GetSubscription(criteria.Topic, criteria.Subscription); } } } diff --git a/src/SbManager/Models/ViewModelBuilders/TopicModelBuilder.cs b/src/SbManager/Models/ViewModelBuilders/TopicModelBuilder.cs index 10df0ad..b8e7e24 100644 --- a/src/SbManager/Models/ViewModelBuilders/TopicModelBuilder.cs +++ b/src/SbManager/Models/ViewModelBuilders/TopicModelBuilder.cs @@ -1,6 +1,4 @@ -using System; -using System.Linq; -using System.Threading.Tasks; +using System.Threading.Tasks; using SbManager.BusHelpers; using SbManager.Models.ViewModels; @@ -8,13 +6,11 @@ namespace SbManager.Models.ViewModelBuilders { public class TopicCriteria { - public TopicCriteria(string tid, bool requireFresh = false) + public TopicCriteria(string tid) { Topic = tid; - RequireFresh = requireFresh; } public string Topic { get; set; } - public bool RequireFresh { get; set; } } public class TopicModelBuilder : CQRS.ModelBuilders.IModelBuilderWithCriteria { @@ -25,9 +21,9 @@ public TopicModelBuilder(IBusMonitor busMonitor) _busMonitor = busMonitor; } - public async Task Build(TopicCriteria criteria) + public Task Build(TopicCriteria criteria) { - return (await _busMonitor.GetOverview(criteria.RequireFresh)).Topics.Single(t => String.Equals(t.Name, criteria.Topic, StringComparison.CurrentCultureIgnoreCase)); + return _busMonitor.GetTopic(criteria.Topic); } } }