Example #1
0
        public async Task Consume(ConsumeContext <ActivateSubscription> context)
        {
            var subscription = await _subsriptionsRepository.GetSubscription(context.Message.Id);

            if (subscription == null)
            {
                throw new Exception($"Cannot find subscription {context.Message.Id}");
            }

            if (!subscription.Active)
            {
                _logger.LogWarning($"Subscription {context.Message.Id} is not active");
                return;
            }

            // TODO: Connect new consumer

            /*
             * _busControl.ConnectReceiveEndpoint(c =>
             * {
             * c.ConfigureConsumer<DomainEventConsumer<OperationCompletedEvent>>();
             *
             * });
             */

            await Task.CompletedTask;
        }
        /// <inheritdoc/>
        public async Task <SubscriptionModel> GetSubscription(Guid id)
        {
            var subscription = await _subscriptionsRepositry.GetSubscription(id);

            if (subscription == null)
            {
                throw new NotFoundException();
            }

            return(_mapper.Map <SubscriptionModel>(subscription));
        }
Example #3
0
        public async Task Consume(ConsumeContext <T> context)
        {
            var subscriptionIdParsed = context.ReceiveContext.InputAddress.Segments.Last().Replace($"{typeof(T).FullName}_", string.Empty, System.StringComparison.InvariantCultureIgnoreCase);

            if (!Guid.TryParse(subscriptionIdParsed, out Guid subscriptionId) || subscriptionId == Guid.Empty)
            {
                throw new ArgumentException("Failed to parse ID");
            }

            var subscription = await _subscriptionsRepository.GetSubscription(subscriptionId);

            if (subscription == null)
            {
                throw new ArgumentException($"Cannot find subscription {subscriptionId}");
            }

            if (!subscription.Active)
            {
                _logger.LogWarning($"Subscription {subscriptionId} is not active");
            }

            var client = _httpClientFactory.CreateClient(HttpClientNames.WebhookSubscriptionHttpClient);

            client.DefaultRequestHeaders.Clear();

            foreach (var header in subscription.Headers)
            {
                client.DefaultRequestHeaders.Add(header.Key, header.Value);
            }
            var content  = new StringContent(JsonConvert.SerializeObject(context.Message), Encoding.UTF8, "application/json");
            var response = await client.PostAsync(subscription.Endpoint, content);

            if (!response.IsSuccessStatusCode)
            {
                throw new HttpRequestException($"Unable to POST data for subscription {subscription.Id} to {subscription.Endpoint}, status code {response.StatusCode}");
            }
        }