public MessagesNancyModule(IMessageListViewModelRetriever messageListViewModelRetriever , IHandlerFactory handlerFactory) : base("/messages") { Get("/{storeName}/{pageNumber?1}", parameters => { var logger = LogProvider.GetLogger("MessagesNancyModule"); logger.Log(LogLevel.Debug, () => "GET on messages"); string storeName = parameters.storeName; int pageNumber = parameters.pageNumber; ViewModelRetrieverResult <MessageListModel, MessageListModelError> messageListModelResult = messageListViewModelRetriever.Get(storeName, pageNumber); if (!messageListModelResult.IsError) { return(Response.AsJson(messageListModelResult.Result)); } switch (messageListModelResult.Error) { case (MessageListModelError.StoreNotFound): return(Response.AsJson(new MessageViewerError( string.Format("Unknown store {0}", storeName)), HttpStatusCode.NotFound)); case (MessageListModelError.StoreMessageViewerNotImplemented): return(Response.AsJson(new MessageViewerError( string.Format("Found store {0} does not implement IMessageStoreViewer", storeName)), HttpStatusCode.NotFound)); case (MessageListModelError.StoreMessageViewerGetException): return(Response.AsJson(new MessageViewerError( string.Format("Unable to retrieve messages for store {0}", storeName)), HttpStatusCode.InternalServerError)); case (MessageListModelError.GetActivationStateFromConfigError): return(Response.AsJson(new MessageViewerError( string.Format("Misconfigured Message Viewer, unable to retrieve messages for store {0}", storeName)), HttpStatusCode.InternalServerError)); default: throw new Exception("Code can't reach here"); } }); Post("/{storeName}/repost/{msgList}", parameters => { try { var handler = handlerFactory.GetHandler <RepostCommand>(); string ids = parameters.msgList; var repostModelIds = ids.Split(','); var repostCommand = new RepostCommand { StoreName = parameters.storeName, MessageIds = repostModelIds.ToList() }; handler.Handle(repostCommand); return(Response.AsJson <int>(0, HttpStatusCode.OK)); } catch (Exception e) { return(e); } }); }
private async Task <bool> TryRunRepostCommand(BotRequest botRequest) { if (MessageRepostRequest.IsRepostRequest(botRequest)) { var command = new RepostCommand(botRequest.Messenger, botRequest.ChannelId, botRequest.UserId, botRequest.Text); return(await _mediator.Send(command)); } return(false); }
public RepostCommandHandlerMissingStoreTests() { var fakeMessageStoreFactory = FakeMessageStoreViewerFactory.CreateEmptyFactory(); _command = new RepostCommand { MessageIds = new List <string> { Guid.NewGuid().ToString() }, StoreName = _storeName }; _fakeMessageProducer = new FakeMessageProducer(); _repostHandler = new RepostCommandHandler(fakeMessageStoreFactory, new FakeMessageProducerFactoryProvider(new FakeMessageProducerFactory(_fakeMessageProducer)), new MessageRecoverer()); }
public RepostCommandHandlerMessagesNotFoundTests() { var fakeStore = new FakeMessageStoreWithViewer(); var fakeMessageStoreFactory = new FakeMessageStoreViewerFactory(fakeStore, _storeName); _command = new RepostCommand { MessageIds = new List <string> { Guid.NewGuid().ToString() }, StoreName = _storeName }; _fakeMessageProducer = new FakeMessageProducer(); _repostHandler = new RepostCommandHandler(fakeMessageStoreFactory, new FakeMessageProducerFactoryProvider(new FakeMessageProducerFactory(_fakeMessageProducer)), new MessageRecoverer()); }
public void Establish() { var fakeStore = new FakeMessageStoreWithViewer(); _messageToRepost = new Message(new MessageHeader(Guid.NewGuid(), "a topic", MessageType.MT_COMMAND, DateTime.UtcNow), new MessageBody("body")); fakeStore.Add(_messageToRepost); var fakeMessageStoreFactory = new FakeMessageStoreViewerFactory(fakeStore, _storeName); _command = new RepostCommand { MessageIds = new List <string> { _messageToRepost.Header.Id.ToString() }, StoreName = _storeName }; _repostHandler = new RepostCommandHandler(fakeMessageStoreFactory, new FakeMessageProducerFactoryProvider(new FakeErrorProducingMessageProducerFactory()), new MessageRecoverer()); }
public MessagesNancyModule(IMessageListViewModelRetriever messageListViewModelRetriever , IHandlerFactory handlerFactory) : base("/messages") { Get["/{storeName}/{pageNumber?1}"] = parameters => { var logger = LogProvider.GetLogger("MessagesNancyModule"); logger.Log(LogLevel.Debug, () => "GET on messages"); string storeName = parameters.storeName; int pageNumber = parameters.pageNumber; ViewModelRetrieverResult<MessageListModel, MessageListModelError> messageListModelResult = messageListViewModelRetriever.Get(storeName, pageNumber); if (!messageListModelResult.IsError) { return Response.AsJson(messageListModelResult.Result); } switch (messageListModelResult.Error) { case(MessageListModelError.StoreNotFound): return Response.AsJson(new MessageViewerError( string.Format("Unknown store {0}", storeName)), HttpStatusCode.NotFound); case (MessageListModelError.StoreMessageViewerNotImplemented): return Response.AsJson(new MessageViewerError( string.Format("Found store {0} does not implement IMessageStoreViewer", storeName)), HttpStatusCode.NotFound); case (MessageListModelError.StoreMessageViewerGetException): return Response.AsJson(new MessageViewerError( string.Format("Unable to retrieve messages for store {0}", storeName)), HttpStatusCode.InternalServerError); case (MessageListModelError.GetActivationStateFromConfigError): return Response.AsJson(new MessageViewerError( string.Format("Misconfigured Message Viewer, unable to retrieve messages for store {0}", storeName)), HttpStatusCode.InternalServerError); default: throw new SystemException("Code can't reach here"); } }; Post["/{storeName}/repost/{msgList}"] = parameters => { var handler = handlerFactory.GetHandler<RepostCommand>(); string ids = parameters.msgList; var repostModelIds = ids.Split(','); var repostCommand = new RepostCommand { StoreName = parameters.storeName, MessageIds = repostModelIds.ToList() }; handler.Handle(repostCommand); return Response.AsJson<int>(0, HttpStatusCode.OK); }; }