Пример #1
0
        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);
            }
        }