示例#1
0
        public async Task SendWebhookNotificationAsync(FlightDetailChangePayloadDto payload)
        {
            var serializedPayload = JsonSerializer.Serialize(payload);

            var httpClient = _httpClientFactory.CreateClient();

            var request = new HttpRequestMessage(HttpMethod.Post, payload.WebhookUri);

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            request.Content = new StringContent(serializedPayload);
            request.Content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json");

            try
            {
                using (var response = await httpClient.SendAsync(request))
                {
                    response.EnsureSuccessStatusCode();
                    Console.WriteLine("Success!");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Unsuccessful {ex.Message}");
            }
        }
示例#2
0
        public async Task SendWebhookNotification(FlightDetailChangePayloadDto flightDetailChangePayloadDto)
        {
            var serializedPayload = JsonSerializer.Serialize(flightDetailChangePayloadDto);

            var httpClient = _httpClientFactory.CreateClient();
            var request    = new HttpRequestMessage(HttpMethod.Post, flightDetailChangePayloadDto.WebhookUri);

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            request.Content = new StringContent(serializedPayload);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            try
            {
                using (var response = await httpClient.SendAsync(request))
                {
                    Console.WriteLine("Send webhook successful.");

                    response.EnsureSuccessStatusCode();
                }
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine("Send webhook failed: {0}: {1}: {2}", ex.Message, ex.InnerException?.Message, ex.StackTrace);
            }
        }
示例#3
0
        public void Run()
        {
            var factory = new ConnectionFactory
            {
                HostName = "localhost",
                Port     = 5672
            };

            using var connection = factory.CreateConnection();
            using (var channel = connection.CreateModel())
            {
                channel.ExchangeDeclare(exchange: "trigger", type: ExchangeType.Fanout);

                var queueName = channel.QueueDeclare().QueueName;

                channel.QueueBind(
                    queue: queueName,
                    exchange: "trigger",
                    routingKey: "");

                var consumer = new EventingBasicConsumer(channel);
                Console.WriteLine("Listening on the message bus...");

                consumer.Received += async(ModuleHandle, ea) =>
                {
                    var body = ea.Body;
                    var notificationMessage = Encoding.UTF8.GetString(body.ToArray());
                    var message             = JsonSerializer.Deserialize <NotificationMessageDto>(notificationMessage);

                    var webhookToSend = new FlightDetailChangePayloadDto
                    {
                        WebhookType     = message.WebhookType,
                        WebhookUri      = string.Empty,
                        Secret          = string.Empty,
                        Publisher       = string.Empty,
                        OldPricePerSeat = message.OldPricePerSeat,
                        NewPricePerSeat = message.NewPricePerSeat,
                        FlightCode      = message.FlightCode
                    };

                    foreach (var whs in _context.WebhookSubscriptions.Where(sub => sub.WebhookType.Equals(message.WebhookType)))
                    {
                        webhookToSend.WebhookUri = whs.WebhookUri;
                        webhookToSend.Secret     = whs.Secret;
                        webhookToSend.Publisher  = whs.WebhookPublisher;

                        await _webhookClient.SendWebhookNotificationAsync(webhookToSend);
                    }
                };

                channel.BasicConsume(
                    queue: queueName,
                    autoAck: true,
                    consumer: consumer);

                Console.ReadLine();
            }
        }