/// <summary> /// Create a filter /// </summary> /// <param name="jiraClient">IFilterDomain to bind the extension method to</param> /// <param name="filter">Filter to create</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>Filter</returns> public static async Task <Filter> CreateAsync(this IFilterDomain jiraClient, Filter filter, CancellationToken cancellationToken = default) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } var filterCopy = new Filter { Name = filter.Name, Jql = filter.Jql, Description = filter.Description, IsFavorite = filter.IsFavorite }; jiraClient.Behaviour.MakeCurrent(); var filterUri = jiraClient.JiraRestUri.AppendSegments("filter"); // Add the configurable expand values, if the value is not null or empty if (JiraConfig.ExpandGetFilter?.Length > 0) { filterUri = filterUri.ExtendQuery("expand", string.Join(",", JiraConfig.ExpandGetFilter)); } var response = await filterUri.PostAsync <HttpResponse <Filter, Error> >(filterCopy, cancellationToken).ConfigureAwait(false); return(response.HandleErrors()); }
/// <summary> /// Delete filter /// See: https://docs.atlassian.com/jira/REST/latest/#d2e1388 /// </summary> /// <param name="jiraClient">IFilterDomain to bind the extension method to</param> /// <param name="filter">Filter to delete</param> /// <param name="cancellationToken">CancellationToken</param> public static async Task DeleteAsync(this IFilterDomain jiraClient, Filter filter, CancellationToken cancellationToken = default) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } Log.Debug().WriteLine("Deleting filter {0}", filter.Id); jiraClient.Behaviour.MakeCurrent(); var filterUri = jiraClient.JiraRestUri.AppendSegments("filter", filter.Id); var response = await filterUri.DeleteAsync <HttpResponse>(cancellationToken).ConfigureAwait(false); response.HandleStatusCode(HttpStatusCode.NoContent); }
/// <summary> /// Get filter /// See: https://docs.atlassian.com/jira/REST/latest/#d2e1388 /// </summary> /// <param name="jiraClient">IFilterDomain to bind the extension method to</param> /// <param name="id">filter id</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>Filter</returns> public static async Task <Filter> GetAsync(this IFilterDomain jiraClient, long id, CancellationToken cancellationToken = default) { Log.Debug().WriteLine("Retrieving filter {0}", id); jiraClient.Behaviour.MakeCurrent(); var filterUri = jiraClient.JiraRestUri.AppendSegments("filter", id); // Add the configurable expand values, if the value is not null or empty if (JiraConfig.ExpandGetFilter?.Length > 0) { filterUri = filterUri.ExtendQuery("expand", string.Join(",", JiraConfig.ExpandGetFilter)); } var response = await filterUri.GetAsAsync <HttpResponse <Filter, Error> >(cancellationToken).ConfigureAwait(false); return(response.HandleErrors()); }