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}"); } }
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); } }
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(); } }