/// <summary> /// Update a space /// </summary> /// <param name="confluenceClient">ISpaceDomain to bind the extension method to</param> /// <param name="space">Space to update</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>created Space</returns> public static async Task<Space> UpdateAsync(this ISpaceDomain confluenceClient, Space space, CancellationToken cancellationToken = default) { confluenceClient.Behaviour.MakeCurrent(); var spaceUri = confluenceClient.ConfluenceApiUri.AppendSegments("space", space.Key); var response = await spaceUri.PutAsync<HttpResponse<Space, string>>(space, cancellationToken).ConfigureAwait(false); return response.HandleErrors(); }
/// <summary> /// Delete a space /// </summary> /// <param name="confluenceClient">ISpaceDomain to bind the extension method to</param> /// <param name="key">Key for the space</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>Long running task, which takes care of deleting the space</returns> public static async Task<LongRunningTask> DeleteAsync(this ISpaceDomain confluenceClient, string key, CancellationToken cancellationToken = default) { confluenceClient.Behaviour.MakeCurrent(); var spaceUri = confluenceClient.ConfluenceApiUri.AppendSegments("space", key); var response = await spaceUri.DeleteAsync<HttpResponse<LongRunningTask>>(cancellationToken).ConfigureAwait(false); return response.HandleErrors(HttpStatusCode.Accepted); }
/// <summary> /// Get Space information see <a href="https://docs.atlassian.com/confluence/REST/latest/#d3e164">here</a> /// </summary> /// <param name="confluenceClient">ISpaceDomain to bind the extension method to</param> /// <param name="spaceKey">the space key</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>Space</returns> public static async Task <Space> GetAsync(this ISpaceDomain confluenceClient, string spaceKey, CancellationToken cancellationToken = default(CancellationToken)) { confluenceClient.Behaviour.MakeCurrent(); var spaceUri = confluenceClient.ConfluenceApiUri.AppendSegments("space", spaceKey); if (ConfluenceClientConfig.ExpandGetSpace != null && ConfluenceClientConfig.ExpandGetSpace.Length != 0) { spaceUri = spaceUri.ExtendQuery("expand", string.Join(",", ConfluenceClientConfig.ExpandGetSpace)); } var response = await spaceUri.GetAsAsync <HttpResponse <Space, Error> >(cancellationToken).ConfigureAwait(false); return(response.HandleErrors()); }
/// <summary> /// Get Space information see <a href="https://docs.atlassian.com/confluence/REST/latest/#d3e164">here</a> /// </summary> /// <param name="confluenceClient">ISpaceDomain to bind the extension method to</param> /// <param name="spaceKey">the space key</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>Space</returns> public static async Task<Space> GetAsync(this ISpaceDomain confluenceClient, string spaceKey, CancellationToken cancellationToken = default) { confluenceClient.Behaviour.MakeCurrent(); var spaceUri = confluenceClient.ConfluenceApiUri.AppendSegments("space", spaceKey); var expand = string.Join(",", ConfluenceClientConfig.ExpandGetSpace ?? Enumerable.Empty<string>()); if (!string.IsNullOrEmpty(expand)) { spaceUri = spaceUri.ExtendQuery("expand", expand); } var response = await spaceUri.GetAsAsync<HttpResponse<Space, Error>>(cancellationToken).ConfigureAwait(false); return response.HandleErrors(); }
/// <summary> /// Get Spaces with specific parameters, see <a href="https://docs.atlassian.com/confluence/REST/latest/#d3e164">here</a> /// </summary> /// <param name="confluenceClient">ISpaceDomain to bind the extension method to</param> /// <param name="spaceKeys">IEnumerable of string with space keys</param> /// <param name="type">string filter the list of spaces returned by type (global, personal)</param> /// <param name="status">string filter the list of spaces returned by status (current, archived)</param> /// <param name="label">string filter the list of spaces returned by label</param> /// <param name="favourite">bool filter the list of spaces returned by favorites</param> /// <param name="pagingInformation">PagingInformation</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>List of Spaces</returns> public static async Task <IList <Space> > GetAllWithParametersAsync(this ISpaceDomain confluenceClient, IEnumerable <string> spaceKeys = null, string type = null, string status = null, string label = null, bool?favourite = null, PagingInformation pagingInformation = null, CancellationToken cancellationToken = default) { confluenceClient.Behaviour.MakeCurrent(); var spacesUri = confluenceClient.ConfluenceApiUri.AppendSegments("space"); foreach (var spaceKey in spaceKeys ?? Enumerable.Empty <string>()) { spacesUri = spacesUri.ExtendQuery("spaceKey", spaceKey); } if (!string.IsNullOrEmpty(type)) { spacesUri = spacesUri.ExtendQuery("type", type); } if (!string.IsNullOrEmpty(status)) { spacesUri = spacesUri.ExtendQuery("status", status); } if (!string.IsNullOrEmpty(label)) { spacesUri = spacesUri.ExtendQuery("label", label); } if (favourite.HasValue) { spacesUri = spacesUri.ExtendQuery("favourite", favourite); } var expand = string.Join(",", ConfluenceClientConfig.ExpandGetSpace ?? Enumerable.Empty <string>()); if (!string.IsNullOrEmpty(expand)) { spacesUri = spacesUri.ExtendQuery("expand", expand); } if (pagingInformation?.Start != null) { spacesUri = spacesUri.ExtendQuery("start", pagingInformation.Start.Value); } if (pagingInformation?.Limit != null) { spacesUri = spacesUri.ExtendQuery("limit", pagingInformation.Limit.Value); } var response = await spacesUri.GetAsAsync <HttpResponse <Result <Space>, Error> >(cancellationToken).ConfigureAwait(false); return(response.HandleErrors()?.Results); }
/// <summary> /// Create a private space /// </summary> /// <param name="confluenceClient">ISpaceDomain to bind the extension method to</param> /// <param name="key">Key for the space</param> /// <param name="name">Name for the space</param> /// <param name="description">Description for the space</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>created Space</returns> public static async Task<Space> CreatePrivateAsync(this ISpaceDomain confluenceClient, string key, string name, string description, CancellationToken cancellationToken = default) { confluenceClient.Behaviour.MakeCurrent(); var space = new Space { Key = key, Name = name, Description = new Description { Plain = new Plain { Value = description } } }; var spaceUri = confluenceClient.ConfluenceApiUri.AppendSegments("space", "_private"); var response = await spaceUri.PostAsync<HttpResponse<Space, Error>>(space, cancellationToken).ConfigureAwait(false); return response.HandleErrors(); }
/// <summary> /// Get Spaces with all the defaults, see <a href="https://docs.atlassian.com/confluence/REST/latest/#d3e164">here</a> /// </summary> /// <param name="confluenceClient">ISpaceDomain to bind the extension method to</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns>List of Spaces</returns> public static Task <IList <Space> > GetAllAsync(this ISpaceDomain confluenceClient, CancellationToken cancellationToken = default) { return(confluenceClient.GetAllWithParametersAsync(cancellationToken: cancellationToken)); }