Пример #1
0
 /// <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();
 }
Пример #2
0
 /// <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);
 }
Пример #3
0
        /// <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());
        }
Пример #4
0
        /// <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);
        }
Пример #6
0
 /// <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));
 }