static void Main(string[] args) { var factory = new ConnectionFactory { HostName = "localhost", UserName = "******", Password = "******" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.ExchangeDeclare(exchange: EXCHANGE_NAME, type: "direct", durable: true, autoDelete: false); const string routingKey = "staging.payment.authorization"; var input = new Input { Transaction = new AuthorizedTransaction { Id = 59843, OrderId = Guid.NewGuid() } }; var payload = new ActionRequestPayload <Input> { Action = new HasuraAction { Name = "my_hasura_action_name" }, Input = input, SessionVariables = new HasuraSessionVariables { Role = "rex", UserId = Guid.NewGuid() } }; var message = JsonConvert.SerializeObject(payload); var body = Encoding.Default.GetBytes(message); var props = channel.CreateBasicProperties(); props.ContentType = "application/json"; channel.BasicPublish(exchange: EXCHANGE_NAME, routingKey: routingKey, basicProperties: props, body: body); Console.WriteLine("Sent {0}", message); } } }
public async Task <string> CreateAction(string alertId) { try { var payload = new ActionRequestPayload { PropertiesPayload = new ActionRequestPropertiesPayload { LogicAppResourceId = _azureConfig.WorkflowId, TriggerUri = TRIGGER_URI } }; _azureConfig.LastCreatedAction = Guid.NewGuid().ToString(); var url = $"{_azureConfig.BaseUrl}/alertRules/{alertId}/actions/{_azureConfig.LastCreatedAction}?api-version={_azureConfig.ApiVersion}"; var serialized = JsonConvert.SerializeObject(payload, new JsonSerializerSettings { ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } }); var request = new HttpRequestMessage(HttpMethod.Put, url) { Content = new StringContent(serialized, Encoding.UTF8, "application/json") }; await _authenticationService.AuthenticateRequest(request); var http = new HttpClient(); var response = await http.SendAsync(request); if (response.IsSuccessStatusCode) { return(await response.Content.ReadAsStringAsync()); } var error = await response.Content.ReadAsStringAsync(); var formatted = JsonConvert.DeserializeObject(error); throw new WebException("Error calling the API: \n" + JsonConvert.SerializeObject(formatted, Formatting.Indented)); } catch (Exception ex) { throw new Exception("Something went wrong: \n" + ex.Message); } }