public override async Task ExecuteAsync(IOperationExecutionContext context) { var gitlab = new GitLabClient(this.ApiUrl, this.UserName, this.Password, this.GroupName); var data = new Dictionary <string, object> { ["title"] = this.Title }; if (this.AdditionalProperties != null) { foreach (var p in this.AdditionalProperties) { data.Add(p.Key, p.Key == "confidential" ? bool.Parse(p.Value?.ToString()) : p.Key == "weight" ? int.Parse(p.Value?.ToString()) : p.Value); } } if (!string.IsNullOrEmpty(this.Body)) { data.Add("description", this.Body); } if (this.Labels != null) { data.Add("labels", string.Join(",", this.Labels)); } if (this.Assignees != null) { data.Add("assignee_ids", (await Task.WhenAll(this.Assignees.Select(name => gitlab.FindUserAsync(name, context.CancellationToken))).ConfigureAwait(false)).Where(id => id.HasValue)); } if (!string.IsNullOrEmpty(this.Milestone)) { data.Add("milestone_id", await gitlab.CreateMilestoneAsync(this.Milestone, this.ProjectName, context.CancellationToken).ConfigureAwait(false)); } this.IssueId = await gitlab.CreateIssueAsync(this.ProjectName, data, context.CancellationToken).ConfigureAwait(false); }