/// <summary> /// Creates the or update wiki page asynchronous. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="projectId">The project identifier.</param> /// <param name="pageName">Name of the page.</param> /// <param name="wikiPage">The wiki page.</param> /// <returns></returns> public static async Task <WikiPage> CreateOrUpdateWikiPageAsync(this RedmineManager redmineManager, string projectId, string pageName, WikiPage wikiPage) { var uri = UrlHelper.GetWikiCreateOrUpdaterUrl(redmineManager, projectId, pageName); var data = RedmineSerializer.Serialize(wikiPage, redmineManager.MimeFormat); return(await WebApiAsyncHelper.ExecuteUpload <WikiPage>(redmineManager, uri, HttpVerbs.PUT, data, "CreateOrUpdateWikiPageAsync")); }
/// <summary> /// Adds the watcher asynchronous. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="issueId">The issue identifier.</param> /// <param name="userId">The user identifier.</param> /// <returns></returns> public static async Task AddWatcherToIssueAsync(this RedmineManager redmineManager, int issueId, int userId) { var data = DataHelper.UserData(userId, redmineManager.MimeFormat); var uri = UrlHelper.GetAddWatcherUrl(redmineManager, issueId); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.POST, data).ConfigureAwait(false); }
/// <summary> /// Adds an existing user to a group. This method does not block the calling thread. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="groupId">The group id.</param> /// <param name="userId">The user id.</param> /// <returns> /// Returns the Guid associated with the async request. /// </returns> public static async Task AddUserToGroupAsync(this RedmineManager redmineManager, int groupId, int userId) { var data = DataHelper.UserData(userId, redmineManager.MimeFormat); var uri = UrlHelper.GetAddUserToGroupUrl(redmineManager, groupId); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.POST, data, "AddUserToGroupAsync"); }
/// <summary> /// Deletes the wiki page asynchronous. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="projectId">The project identifier.</param> /// <param name="pageName">Name of the page.</param> /// <returns></returns> public static async Task DeleteWikiPageAsync(this RedmineManager redmineManager, string projectId, string pageName) { var uri = UrlHelper.GetDeleteWikiUrl(redmineManager, projectId, pageName); uri = Uri.EscapeUriString(uri); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.DELETE, string.Empty).ConfigureAwait(false); }
/// <summary> /// Creates a new Redmine object. This method does not block the calling thread. /// </summary> /// <typeparam name="T">The type of object to create.</typeparam> /// <param name="redmineManager">The redmine manager.</param> /// <param name="obj">The object to create.</param> /// <param name="ownerId">The owner identifier.</param> /// <returns></returns> public static async Task <T> CreateObjectAsync <T>(this RedmineManager redmineManager, T obj, string ownerId) where T : class, new() { var uri = UrlHelper.GetCreateUrl <T>(redmineManager, ownerId); var data = RedmineSerializer.Serialize(obj, redmineManager.MimeFormat); return(await WebApiAsyncHelper.ExecuteUpload <T>(redmineManager, uri, HttpVerbs.POST, data, "CreateObjectAsync")); }
/// <summary> /// Updates the object asynchronous. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="redmineManager">The redmine manager.</param> /// <param name="id">The identifier.</param> /// <param name="entity">The object.</param> /// <returns></returns> public static async Task UpdateObjectAsync <T>(this RedmineManager redmineManager, string id, T entity) where T : class, new() { var uri = UrlHelper.GetUploadUrl <T>(redmineManager, id); var data = redmineManager.Serializer.Serialize(entity); data = Regex.Replace(data, @"\r\n|\r|\n", "\r\n"); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.PUT, data).ConfigureAwait(false); }
/// <summary> /// Creates a new Redmine object. This method does not block the calling thread. /// </summary> /// <typeparam name="T">The type of object to create.</typeparam> /// <param name="redmineManager">The redmine manager.</param> /// <param name="entity">The object to create.</param> /// <param name="ownerId">The owner identifier.</param> /// <returns></returns> public static async Task <T> CreateObjectAsync <T>(this RedmineManager redmineManager, T entity, string ownerId) where T : class, new() { var uri = UrlHelper.GetCreateUrl <T>(redmineManager, ownerId); var data = redmineManager.Serializer.Serialize(entity); var response = await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.POST, data).ConfigureAwait(false); return(redmineManager.Serializer.Deserialize <T>(response)); }
/// <summary> /// Updates the object asynchronous. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="redmineManager">The redmine manager.</param> /// <param name="id">The identifier.</param> /// <param name="obj">The object.</param> /// <param name="projectId">The project identifier.</param> /// <returns></returns> public static async Task UpdateObjectAsync <T>(this RedmineManager redmineManager, string id, T obj, string projectId = null) where T : class, new() { var uri = UrlHelper.GetUploadUrl(redmineManager, id, obj, projectId); var data = RedmineSerializer.Serialize(obj, redmineManager.MimeFormat); data = Regex.Replace(data, @"\r\n|\r|\n", "\r\n"); await WebApiAsyncHelper.ExecuteUpload <T>(redmineManager, uri, HttpVerbs.PUT, data, "UpdateObjectAsync"); }
/// <summary> /// Creates the or update wiki page asynchronous. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="projectId">The project identifier.</param> /// <param name="pageName">Name of the page.</param> /// <param name="wikiPage">The wiki page.</param> /// <returns></returns> public static async Task UpdateWikiPageAsync(this RedmineManager redmineManager, string projectId, string pageName, WikiPage wikiPage) { var data = redmineManager.Serializer.Serialize(wikiPage); if (string.IsNullOrEmpty(data)) { return; } var url = UrlHelper.GetWikiCreateOrUpdaterUrl(redmineManager, projectId, pageName); url = Uri.EscapeUriString(url); var response = await WebApiAsyncHelper.ExecuteUpload(redmineManager, url, HttpVerbs.PUT, data).ConfigureAwait(false); }
/// <summary> /// Deletes the Redmine object. This method does not block the calling thread. /// </summary> /// <typeparam name="T">The type of objects to delete.</typeparam> /// <param name="redmineManager">The redmine manager.</param> /// <param name="id">The id of the object to delete</param> /// <returns></returns> public static async Task DeleteObjectAsync <T>(this RedmineManager redmineManager, string id) where T : class, new() { var uri = UrlHelper.GetDeleteUrl <T>(redmineManager, id); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.DELETE, string.Empty).ConfigureAwait(false); }
/// <summary> /// Removes the watcher asynchronous. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="issueId">The issue identifier.</param> /// <param name="userId">The user identifier.</param> /// <returns></returns> public static async Task RemoveWatcherFromIssueAsync(this RedmineManager redmineManager, int issueId, int userId) { var uri = UrlHelper.GetRemoveWatcherUrl(redmineManager, issueId, userId); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.DELETE, string.Empty).ConfigureAwait(false); }
/// <summary> /// Deletes the wiki page asynchronous. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="projectId">The project identifier.</param> /// <param name="pageName">Name of the page.</param> /// <returns></returns> public static async Task DeleteWikiPageAsync(this RedmineManager redmineManager, string projectId, string pageName) { var uri = UrlHelper.GetDeleteWikirUrl(redmineManager, projectId, pageName); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.DELETE, string.Empty, "DeleteWikiPageAsync"); }
/// <summary> /// Deletes the Redmine object. This method does not block the calling thread. /// </summary> /// <typeparam name="T">The type of objects to delete.</typeparam> /// <param name="redmineManager">The redmine manager.</param> /// <param name="id">The id of the object to delete</param> /// <param name="parameters">Optional filters and/or optional fetched data.</param> /// <returns></returns> public static async Task DeleteObjectAsync <T>(this RedmineManager redmineManager, string id, NameValueCollection parameters) where T : class, new() { var uri = UrlHelper.GetDeleteUrl <T>(redmineManager, id); await WebApiAsyncHelper.ExecuteUpload <T>(redmineManager, uri, HttpVerbs.DELETE, string.Empty, "DeleteObjectAsync"); }
/// <summary> /// Removes an user from a group. This method does not block the calling thread. /// </summary> /// <param name="redmineManager">The redmine manager.</param> /// <param name="groupId">The group id.</param> /// <param name="userId">The user id.</param> /// <returns></returns> public static async Task DeleteUserFromGroupAsync(this RedmineManager redmineManager, int groupId, int userId) { var uri = UrlHelper.GetRemoveUserFromGroupUrl(redmineManager, groupId, userId); await WebApiAsyncHelper.ExecuteUpload(redmineManager, uri, HttpVerbs.DELETE, string.Empty, "DeleteUserFromGroupAsync"); }