public async Task Search(JiraConfiguration configuration, Action <string> onSuccess, Action <string> onFail) { try { var api = new ApiClientJira( configuration.BaseAddress, configuration.Username, configuration.Password); var response = await api.Search(configuration.ApiPath, configuration.Query); if (response.Result == HttpStatusCode.OK) { onSuccess?.Invoke(response.Item1.ToString()); } else { onFail?.Invoke($"Failed to return JIRA data, HttpStatusCode: { response.Result }"); } } catch (Exception ex) { onFail?.Invoke(ex.Message); } }
public void Run(JiraConfiguration settings, TextWriter output) { if (Period == null || Users == null) { throw new InvalidOperationException( $"{nameof(Period)} and {nameof(Users)} must be initialized before running command."); } if (Users.Length == 0) { throw new InvalidOperationException($"{nameof(Users)} must contain at least one user."); } output.WriteLine("Downloading worklogs for period of {0}.", Period); var jiraClient = new RestApiServiceClient(new HttpClientHandler(), settings.BaseUrl, settings.Login, settings.Password); var views = DownloadTimesheetAsync(jiraClient, Users, Period).Result; output.WriteLine(); using (var fileWriter = GetFileWriter(OutputFileName)) { var compositOutput = new CompositTextWriter(fileWriter, output); //printing into output foreach (var view in views) { compositOutput.WriteLine("Worklogs for user \"{0}\":", view.Author.Name); view.Print(new PlainTextOutput(compositOutput)); compositOutput.WriteLine(); } } }
public void Authenticate_OnSuccess_It_Returns_True() { var jiraConfig = new JiraConfiguration() { timeTrackingConfiguration = new TimeTrackingConfiguration() }; jiraApiRequesterMock.Setup(m => m.DoAuthenticatedRequest <JiraConfiguration>(It.IsAny <IRestRequest>())).Returns(jiraConfig); Assert.That(jiraClient.Authenticate("myuser", "myapitoken"), Is.True); }
private void ParseArgs(JiraConfiguration settings, string[] args) { for (int argIndex = 0; argIndex < args.Length; argIndex++) { if (Program.IsArg(args[argIndex], "h", "help")) { PrintHelp(); throw new GracefulException(); } else if (Program.IsArg(args[argIndex], "u", "users")) { string users = Program.GetOptionArgValue(args, ++argIndex); Users = users.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); } else if (Program.IsArg(args[argIndex], "p", "period")) { string periodText = Program.GetOptionArgValue(args, ++argIndex); Period = periodText.All(char.IsDigit) ? Period.FromDays(int.Parse(periodText)) : Period.FromString(periodText); } else if (Program.IsArg(args[argIndex], "f", "file")) { OutputFileName = Program.GetOptionArgValue(args, ++argIndex); } else { Console.WriteLine($"Unknown option: {args[argIndex]}"); throw new ArgumentException(); } } //set defaults if none passed as arguments if (Period == null) { Period = Period.FromDays(15); } if (Users == null) { //getting timesheet for current user by default Users = new[] { settings.Login }; } }
public JiraClient(ILoggerFactory loggerFactory, IHttpClientFactory clientFactory, ConfigurationRoot configuraton) { _logger = loggerFactory.CreateLogger <KaitenClient>(); _clientFactory = clientFactory; _configuration = configuraton.GetSection("jira").Get <JiraConfiguration>(); }