public async Task <string> CreateIncident(IncidentPayload payload, string incidentId)
        {
            try
            {
                //var payload = new IncidentPayload
                //{
                //    PropertiesPayload = new IncidentPropertiesPayload
                //    {
                //        Severity = Severity.Low,
                //        Status = IncidentStatus.New,
                //        Title = INCIDENT_NAME
                //    }
                //};

                var url = $"{_azureConfig.BaseUrl}/incidents/{incidentId}?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);
            }
        }
Exemplo n.º 2
0
        public async Task Run(string[] args)
        {
            while (true)
            {
                PrintMenu();

                Console.Write("Option: ");
                var option = Console.ReadLine();

                var valid = int.TryParse(option, out var index);
                valid = valid && index > 0 && index < 29;
                if (!valid)
                {
                    Console.WriteLine("Invalid option... please, press enter to continue...");
                    Console.ReadLine();
                    continue;
                }

                var response = "";
                var input    = "";
                try
                {
                    switch (index)
                    {
                    case 1:
                    {
                        Console.WriteLine("Enter Alert rule name");
                        input    = Console.ReadLine();
                        response = await _actionsController.CreateAction(input);

                        break;
                    }

                    case 2:
                    {
                        Console.WriteLine("Enter Alert rule name");
                        input    = Console.ReadLine();
                        response = await _actionsController.DeleteAction(input);

                        break;
                    }

                    case 3:
                    {
                        Console.WriteLine("Enter Alert rule name");
                        input    = Console.ReadLine();
                        response = await _actionsController.GetActionById(input);

                        break;
                    }

                    case 4:
                    {
                        Console.WriteLine("Enter Alert rule name");
                        input    = Console.ReadLine();
                        response = await _actionsController.GetActionsByRule(input);

                        break;
                    }

                    case 5:
                    {
                        Console.WriteLine("Enter template name");
                        input    = Console.ReadLine();
                        response = await _alertRuleTemplatesController.GetAlertRuleTemplateById(input);

                        break;
                    }

                    case 6:
                    {
                        response = await _alertRuleTemplatesController.GetAlertRuleTemplates();

                        break;
                    }

                    case 7:
                    {
                        Console.WriteLine("Enter alert rule template name");
                        input    = Console.ReadLine();
                        response = await _alertRulesController.CreateFusionAlertRule(input);

                        break;
                    }

                    case 8:
                    {
                        Console.WriteLine("Enter rule name");
                        input    = Console.ReadLine();
                        response = await _alertRulesController.CreateMicrosoftSecurityIncidentCreationAlertRule(input);

                        break;
                    }

                    case 9:
                    {
                        response = await _alertRulesController.CreateScheduledAlertRule();

                        break;
                    }

                    case 10:
                    {
                        response = await _alertRulesController.DeleteAlertRule();

                        break;
                    }

                    case 11:
                    {
                        response = await _alertRulesController.GetAlertRules();

                        break;
                    }

                    case 12:
                    {
                        response = await _alertRulesController.GetFusionAlertRule();

                        break;
                    }

                    case 13:
                    {
                        response = await _alertRulesController.GetMicrosoftSecurityIdentityCreationAlertRule();

                        break;
                    }

                    case 14:
                    {
                        response = await _alertRulesController.GetScheduledAlertRule();

                        break;
                    }

                    case 15:
                    {
                        response = await _bookmarksController.CreateBookmark();

                        break;
                    }

                    case 16:
                    {
                        response = await _bookmarksController.DeleteBookmark();

                        break;
                    }

                    case 17:
                    {
                        response = await _bookmarksController.GetBookmarkById();

                        break;
                    }

                    case 18:
                    {
                        response = await _bookmarksController.GetBookmarks();

                        break;
                    }

                    case 19:
                    {
                        response = await _dataConnectorsController.GetDataConnectors();

                        break;
                    }

                    case 20:
                    {
                        response = await _dataConnectorsController.DeleteDataConnector();

                        break;
                    }

                    case 21:
                    {
                        response = await _dataConnectorsController.CreateDataConnector();

                        break;
                    }

                    case 22:
                    {
                        Console.WriteLine("Enter Severity option \n 0 High \n 1 Medium \n 2 Low \n 3 Informational");
                        input = Console.ReadLine();
                        Severity severity = (Severity)Convert.ToInt32(input);

                        Console.WriteLine("Enter Incident status \n 0 New \n 1 Active \n 2 Close");
                        input = Console.ReadLine();
                        IncidentStatus status = (IncidentStatus)Convert.ToInt32(input);

                        Console.WriteLine("Enter Incident name");
                        var title = Console.ReadLine();

                        var payload = new IncidentPayload
                        {
                            PropertiesPayload = new IncidentPropertiesPayload
                            {
                                Severity = severity,
                                Status   = status,
                                Title    = title
                            }
                        };

                        response = await _incidentsController.CreateIncident(payload, title);

                        break;
                    }

                    case 23:
                    {
                        response = await _incidentsController.DeleteIncident();

                        break;
                    }

                    case 24:
                    {
                        response = await _incidentsController.GetIncidentById();

                        break;
                    }

                    case 25:
                    {
                        response = await _incidentsController.GetIncidents();

                        break;
                    }

                    case 26:
                    {
                        response = await _incidentsController.CreateIncidentComment();

                        break;
                    }

                    case 27:
                    {
                        response = await _incidentsController.GetAllIncidentComments();

                        break;
                    }

                    case 28:
                    {
                        response = await _incidentsController.GetIncidentCommentById();

                        break;
                    }
                    }

                    Console.WriteLine(JToken.Parse(response).ToString(Formatting.Indented));
                }
                catch (JsonReaderException exception)
                {
                    if (string.IsNullOrEmpty(response))
                    {
                        Console.WriteLine("Deleted");
                        Console.WriteLine("Enter to continue");
                        Console.ReadLine();
                        continue;
                    }

                    Console.WriteLine(response);
                }

                catch (Exception exception)
                {
                    var currentColor = Console.ForegroundColor;
                    Console.ForegroundColor = ConsoleColor.Red;
                    await Console.Error.WriteLineAsync(exception.Message);

                    Console.ForegroundColor = currentColor;
                }

                Console.WriteLine();
                Console.WriteLine("Enter to continue");
                Console.ReadLine();
            }
        }