示例#1
0
 public MessagesViewModel(IWebCommunicatorAsync <Message> webCommunicator, IMessageDataRepository dataRepository) : base(webCommunicator)
 {
     Refresh            = new DelegateCommand(CanRefreshMessages, RefreshMessageCollection);
     _dataRepository    = dataRepository;
     _messageCollection = new ObservableCollection <Message>(_dataRepository.GetAllMessages());
     IsRefreshing       = false;
 }
        public GetMessageDataPropertyProvider(IPropertyProvider <TInput, MessageData <TValue> > inputProvider, IMessageDataRepository repository = default)
        {
            _repository    = repository;
            _inputProvider = inputProvider;

            _reader = MessageDataReaderFactory.CreateReader <TValue>();
        }
示例#3
0
            protected override void ConfigureInMemoryReceiveEndpoint(IInMemoryReceiveEndpointConfigurator configurator)
            {
                string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

                string messageDataPath = Path.Combine(baseDirectory, "MessageData");

                var dataDirectory = new DirectoryInfo(messageDataPath);

                var fileRepository = new FileSystemMessageDataRepository(dataDirectory);

                ISymmetricKeyProvider keyProvider = new TestSymmetricKeyProvider();
                var cryptoStreamProvider          = new AesCryptoStreamProvider(keyProvider, "default");

                _repository = new EncryptedMessageDataRepository(fileRepository, cryptoStreamProvider);

                configurator.UseMessageData <MessageWithBigData>(_repository);

                _received = Handler <MessageWithBigData>(configurator, async context =>
                {
                    _receivedBody = await context.Message.Body.Value;
                });

                configurator.UseMessageData <MessageWithByteArray>(_repository);

                _receivedBytes = Handler <MessageWithByteArray>(configurator, async context =>
                {
                    _receivedBytesArray = await context.Message.Bytes.Value;
                });
            }
        /// <summary>
        /// Load the message data as part of the transform (replaces the property on the original message, to avoid multiple
        /// loads of the same data).
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="configurator"></param>
        /// <param name="propertyExpression"></param>
        /// <param name="repository"></param>
        public static void LoadMessageData <T, TProperty>(this ITransformConfigurator <T> configurator, Expression <Func <T, TProperty> > propertyExpression,
                                                          IMessageDataRepository repository)
        {
            var configuration = new LoadMessageDataTransformConfiguration <T, TProperty>(repository, propertyExpression.GetPropertyInfo());

            configuration.Apply(configurator);
        }
        /// <summary>
        /// Enable the loading of message data for the any message type that includes a MessageData property.
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="repository"></param>
        public static void UseMessageData(this IBusFactoryConfigurator configurator, IMessageDataRepository repository)
        {
            configurator.ConsumeTopology.AddConvention(new MessageDataConsumeTopologyConvention(repository));
            configurator.SendTopology.AddConvention(new MessageDataSendTopologyConvention(repository));

            // Courier does not use ConsumeContext, so it needs to be special
            var observer = new CourierMessageDataConfigurationObserver(configurator, repository, false);
        }
 public MassTransitMessageDataHubLifetimeManager(IPublishEndpoint publishEndpoint,
                                                 IClientFactory clientFactory,
                                                 IHubProtocolResolver hubProtocolResolver,
                                                 IMessageDataRepository repository)
     : base(publishEndpoint, clientFactory, hubProtocolResolver)
 {
     _repository = repository;
 }
示例#7
0
 public MassTransitMessageDataHubLifetimeManager(HubLifetimeManagerOptions <THub> hubLifetimeManagerOptions,
                                                 IBus bus,
                                                 IHubProtocolResolver hubProtocolResolver,
                                                 IMessageDataRepository repository)
     : base(hubLifetimeManagerOptions, bus, bus.CreateClientFactory().CreateRequestClient <GroupManagement <THub> >(), hubProtocolResolver)
 {
     _repository = repository;
 }
示例#8
0
            protected override void ConfigureInputQueueEndpoint(IReceiveEndpointConfigurator configurator)
            {
                _messageDataRepository = new InMemoryMessageDataRepository();

                configurator.UseMessageData <MessageWithByteArray>(_messageDataRepository);

                _received = Handled <MessageWithByteArray>(configurator);
            }
示例#9
0
            protected override void ConfigureInMemoryReceiveEndpoint(IInMemoryReceiveEndpointConfigurator configurator)
            {
                _messageDataRepository = new InMemoryMessageDataRepository();

                configurator.UseMessageData(_messageDataRepository);

                Handled <IHaveNoMessageData>(configurator);
            }
示例#10
0
        public LoadMessageData(Uri address, IMessageDataRepository repository, IMessageDataConverter <T> converter, CancellationToken cancellationToken)
        {
            _address           = address;
            _repository        = repository;
            _converter         = converter;
            _cancellationToken = cancellationToken;

            _value = new Lazy <Task <T> >(GetValue);
        }
 public NewMessageViewModel(IWebCommunicatorAsync <Message> webCommunicator, IMessageDataRepository dataRepository) : base(webCommunicator)
 {
     _dataRepository = dataRepository;
     send            = new DelegateCommand(CanSendMessage, SendMessage);
     clear           = new DelegateCommand(CanClearMessage, ClearMessage);
     _message        = new Message();
     CountryCodes    = new List <CountryCode>(dataRepository.GetCountryDialingCodes());
     IsSending       = false;
 }
 public UpdateDocumentInStorage(
     ILogger <UpdateDocumentInStorage> logger,
     IBlobStorageClient blobStorageClient,
     IMessageDataRepository messageDataRepository
     ) : base(logger)
 {
     _blobStorageClient     = blobStorageClient;
     _messageDataRepository = messageDataRepository;
 }
示例#13
0
        public LoadMessageData(Uri address, IMessageDataRepository repository, IMessageDataConverter <T> converter, TransformContext transformContext)
        {
            _address          = address;
            _repository       = repository;
            _converter        = converter;
            _transformContext = transformContext;

            _value = new Lazy <Task <T> >(GetValue);
        }
 public AddDocumentToStorage(
     ILogger <AddDocumentToStorage> logger,
     IBlobStorageClient blobStorageClient,
     IMessageDataRepository messageDataRepository
     ) : base(logger)
 {
     _blobStorageClient     = blobStorageClient;
     _messageDataRepository = messageDataRepository;
 }
        public GetMessageDataTransformConfiguration(IMessageDataRepository repository, PropertyInfo property)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            _property   = property;
            _repository = repository;
        }
示例#16
0
        public void Setup()
        {
            var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

            var messageDataPath = Path.Combine(baseDirectory, "MessageData");

            var dataDirectory = new DirectoryInfo(messageDataPath);
            Console.WriteLine("Using data directory: {0}", dataDirectory);

            _repository = new FileSystemMessageDataRepository(dataDirectory);
        }
示例#17
0
            protected override void ConfigureInMemoryReceiveEndpoint(IInMemoryReceiveEndpointConfigurator configurator)
            {
                _messageDataRepository = new InMemoryMessageDataRepository();

                configurator.UseMessageData <MessageWithByteArray>(_messageDataRepository);

                _received = Handler <MessageWithByteArray>(configurator, async context =>
                {
                    _receivedBytesArray = await context.Message.Bytes.Value;
                });
            }
        public static Document ToDocument(this DocumentDto documentDto, IMessageDataRepository messageDataRepository)
        {
            var document = documentDto.ToDocument();

            if (documentDto.Content.HasValue)
            {
                document.Content = GetArrayFromStream(messageDataRepository.Get(documentDto.Content.Address).Result);
            }

            return(document);
        }
示例#19
0
        public void Setup()
        {
            string baseDirectory   = AppDomain.CurrentDomain.BaseDirectory;
            var    messageDataPath = Path.Combine(baseDirectory, "MessageData");

            var dataDirectory = new DirectoryInfo(messageDataPath);

            Console.WriteLine("Using data directory: {0}", dataDirectory);

            _repository = new FileSystemMessageDataRepository(dataDirectory);
        }
示例#20
0
            protected override void ConfigureInMemoryBus(IInMemoryBusFactoryConfigurator configurator)
            {
                var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

                var messageDataPath = Path.Combine(baseDirectory, "MessageData");

                var dataDirectory = new DirectoryInfo(messageDataPath);

                _repository = new FileSystemMessageDataRepository(dataDirectory);

                configurator.UseMessageData(_repository);
            }
示例#21
0
        public MainWindow(IWebCommunicatorAsync <Message> communicator, IMessageDataRepository dataRepository)
        {
            InitializeComponent();

            _MessagesVM   = new MessagesViewModel(communicator, dataRepository);
            _NewMessageVM = new NewMessageViewModel(communicator, dataRepository);

            _MessagesVM.Notification   += ShowPopup;
            _NewMessageVM.Notification += ShowPopup;

            this.MessagesControl.DataContext   = _MessagesVM;
            this.NewMessageControl.DataContext = _NewMessageVM;
        }
 public UpdateDocumentHandler(
     ICommandDispatcher bus,
     IMapper mapper,
     IClock clock,
     MassTransit.IBus massTransitBus,
     IMessageDataRepository messageDataRepository,
     ILogger <UpdateDocumentCommand> logger)
     : base(bus, mapper, logger)
 {
     _massTransitBus        = massTransitBus;
     _messageDataRepository = messageDataRepository;
     _clock = clock;
 }
示例#23
0
        public static MessageData <T> Load <T>(IMessageDataRepository repository, Uri address, TransformContext context)
        {
            if (typeof(T) == typeof(string))
            {
                return((MessageData <T>) new LoadMessageData <string>(address, repository, MessageDataConverter.String, context));
            }

            if (typeof(T) == typeof(byte[]))
            {
                return((MessageData <T>) new LoadMessageData <byte[]>(address, repository, MessageDataConverter.ByteArray, context));
            }

            throw new MessageDataException("Unknown message data type: " + TypeMetadataCache <T> .ShortName);
        }
        public static MessageData <T> Load <T>(IMessageDataRepository repository, Uri address, CancellationToken cancellationToken)
        {
            if (typeof(T) == typeof(string))
            {
                return((MessageData <T>) new GetMessageData <string>(address, repository, MessageDataConverter.String, cancellationToken));
            }

            if (typeof(T) == typeof(byte[]))
            {
                return((MessageData <T>) new GetMessageData <byte[]>(address, repository, MessageDataConverter.ByteArray, cancellationToken));
            }

            throw new MessageDataException("Unsupported message data type: " + TypeMetadataCache <T> .ShortName);
        }
示例#25
0
        public static async Task <MessageData <byte[]> > PutBytes(this IMessageDataRepository repository, byte[] bytes, TimeSpan timeToLive,
                                                                  CancellationToken cancellationToken = default(CancellationToken))
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            using (var ms = new MemoryStream(bytes, false))
            {
                Uri address = await repository.Put(ms, timeToLive, cancellationToken).ConfigureAwait(false);

                return(new ConstantMessageData <byte[]>(address, bytes));
            }
        }
示例#26
0
            protected override void ConfigureInMemoryReceiveEndpoint(IInMemoryReceiveEndpointConfigurator configurator)
            {
                _messageDataRepository = new InMemoryMessageDataRepository();

                configurator.UseMessageData(_messageDataRepository);

                _received = Handler <IMessage>(configurator, async context =>
                {
                    _body       = context.Message.Document.Body;
                    _body0      = context.Message.Documents[0].Body;
                    _bodyList0  = context.Message.DocumentList[0].Body;
                    _bodyFirst  = context.Message.DocumentIndex["First"].Body;
                    _bodySecond = context.Message.DocumentIndex["Second"].Body;
                });
            }
示例#27
0
        public MessageDataConfigurationObserver(IConsumePipeConfigurator configurator, IMessageDataRepository repository)
            : base(configurator)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            _repository = repository;

            Connect(this);
        }
        public GetMessageDataTransformSpecification(IMessageDataRepository repository, IEnumerable <Type> knownTypes = null)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            Replace = true;

            var types = new HashSet <Type>(knownTypes ?? Enumerable.Empty <Type>())
            {
                typeof(TMessage)
            };

            AddMessageDataProperties(repository, types);
        }
示例#29
0
        public static async Task <MessageData <string> > GetString(this IMessageDataRepository repository, Uri address,
                                                                   CancellationToken cancellationToken = default(CancellationToken))
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            using (var ms = new MemoryStream())
            {
                Stream stream = await repository.Get(address, cancellationToken).ConfigureAwait(false);

                await stream.CopyToAsync(ms).ConfigureAwait(false);

                return(new ConstantMessageData <string>(address, Encoding.UTF8.GetString(ms.ToArray())));
            }
        }
示例#30
0
        public static async Task <MessageData <byte[]> > GetBytes(this IMessageDataRepository repository, Uri address,
                                                                  CancellationToken cancellationToken = default(CancellationToken))
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            using (var ms = new MemoryStream())
            {
                Stream stream = await repository.Get(address, cancellationToken);

                await stream.CopyToAsync(ms);

                return(new ConstantMessageData <byte[]>(address, ms.ToArray()));
            }
        }
示例#31
0
            protected override void ConfigureInMemoryBus(IInMemoryBusFactoryConfigurator configurator)
            {
                var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

                var messageDataPath = Path.Combine(baseDirectory, "MessageData");

                var dataDirectory = new DirectoryInfo(messageDataPath);

                var fileRepository = new FileSystemMessageDataRepository(dataDirectory);

                ISymmetricKeyProvider keyProvider = new TestSymmetricKeyProvider();
                var cryptoStreamProvider          = new AesCryptoStreamProvider(keyProvider, "default");

                _repository = new EncryptedMessageDataRepository(fileRepository, cryptoStreamProvider);

                configurator.UseMessageData(_repository);
            }
示例#32
0
            protected override void ConfigureInputQueueEndpoint(IReceiveEndpointConfigurator configurator)
            {
                string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

                string messageDataPath = Path.Combine(baseDirectory, "MessageData");

                var dataDirectory = new DirectoryInfo(messageDataPath);

                _repository = new FileSystemMessageDataRepository(dataDirectory);

                configurator.UseMessageData<MessageWithBigData>(_repository);

                _received = Handled<MessageWithBigData>(configurator);

                configurator.UseMessageData<MessageWithByteArray>(_repository);

                _receivedBytes = Handled<MessageWithByteArray>(configurator);
            }
示例#33
0
            protected override void ConfigureInputQueueEndpoint(IInMemoryReceiveEndpointConfigurator configurator)
            {
                string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

                string messageDataPath = Path.Combine(baseDirectory, "MessageData");

                var dataDirectory = new DirectoryInfo(messageDataPath);

                var fileRepository = new FileSystemMessageDataRepository(dataDirectory);

                ISymmetricKeyProvider keyProvider = new TestSymmetricKeyProvider();
                var cryptoStreamProvider = new AesCryptoStreamProvider(keyProvider, "default");
                _repository = new EncryptedMessageDataRepository(fileRepository, cryptoStreamProvider);

                configurator.UseMessageData<MessageWithBigData>(_repository);

                _received = Handled<MessageWithBigData>(configurator);

                configurator.UseMessageData<MessageWithByteArray>(_repository);

                _receivedBytes = Handled<MessageWithByteArray>(configurator);
            }
 /// <summary>
 /// Provides encrypted stream support to ensure that message data is encrypted at rest.
 /// </summary>
 /// <param name="repository">The original message data repository where message data is stored.</param>
 /// <param name="streamProvider">The encrypted stream provider</param>
 public EncryptedMessageDataRepository(IMessageDataRepository repository, ICryptoStreamProvider streamProvider)
 {
     _repository = repository;
     _streamProvider = streamProvider;
 }
示例#35
0
            protected override void ConfigureInputQueueEndpoint(IReceiveEndpointConfigurator configurator)
            {
                _messageDataRepository = new InMemoryMessageDataRepository();

                configurator.UseMessageData<MessageWithByteArray>(_messageDataRepository);

                _received = Handled<MessageWithByteArray>(configurator);
            }