lib/backlog_kit/client/project.rb in backlog_kit-0.12.1 vs lib/backlog_kit/client/project.rb in backlog_kit-0.13.0
- old
+ new
@@ -1,140 +1,432 @@
module BacklogKit
class Client
+
+ # Methods for the Project API
module Project
- def get_projects
- get('projects')
+
+ # Get list of projects
+ #
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] List of projects
+ def get_projects(params = {})
+ get('projects', params)
end
+ # Get a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] The project information
def get_project(project_id_or_key)
get("projects/#{project_id_or_key}")
end
+ # Create a new project
+ #
+ # @param key [String] Project key
+ # @param name [String] Project name
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The project information
def create_project(key, name, params = {})
params.merge!(key: key, name: name)
post('projects', params)
end
+ # Update a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The project information
def update_project(project_id_or_key, params = {})
patch("projects/#{project_id_or_key}", params)
end
+ # Delete a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] The project information
def delete_project(project_id_or_key)
delete("projects/#{project_id_or_key}")
end
+ # Download a project icon image
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] Binary image data
def download_project_icon(project_id_or_key)
get("projects/#{project_id_or_key}/image")
end
+ # Get list of project activities
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] List of recent updates in the project
def get_project_activities(project_id_or_key, params = {})
get("projects/#{project_id_or_key}/activities", params)
end
+ # Get list of project members
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] List of users
def get_project_users(project_id_or_key)
get("projects/#{project_id_or_key}/users")
end
+ # Add a user to a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param user_id [Integer, String] User id
+ # @return [BacklogKit::Response] The user information
def add_project_user(project_id_or_key, user_id)
post("projects/#{project_id_or_key}/users", user_id: user_id)
end
+ # Remove a user from project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param user_id [Integer, String] User id
+ # @return [BacklogKit::Response] The user information
def remove_project_user(project_id_or_key, user_id)
delete("projects/#{project_id_or_key}/users", user_id: user_id)
end
+ # Get list of users who has Project Administrator role
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] List of users
def get_project_administrators(project_id_or_key)
get("projects/#{project_id_or_key}/administrators")
end
+ # Add Project Administrator role to a user
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param user_id [Integer, String] User id
+ # @return [BacklogKit::Response] The user information
def add_project_admin_auth(project_id_or_key, user_id)
post("projects/#{project_id_or_key}/administrators", user_id: user_id)
end
+ # Remove Project Administrator role from user
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param user_id [Integer, String] User id
+ # @return [BacklogKit::Response] The user information
def remove_project_admin_auth(project_id_or_key, user_id)
delete("projects/#{project_id_or_key}/administrators", user_id: user_id)
end
+ # Get list of issue types
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] List of issue types
def get_issue_types(project_id_or_key)
get("projects/#{project_id_or_key}/issueTypes")
end
+ # Add an issue type to a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param name [String] Issue type name
+ # @param color [String] Background color of the issue type
+ # @return [BacklogKit::Response] The issue type information
def add_issue_type(project_id_or_key, name, color)
post("projects/#{project_id_or_key}/issueTypes", name: name, color: color)
end
+ # Update an issue type
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param type_id [Integer, String] Issue type id
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The issue type information
def update_issue_type(project_id_or_key, type_id, params = {})
patch("projects/#{project_id_or_key}/issueTypes/#{type_id}", params)
end
+ # Remove an issue type from project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param type_id [Integer, String] Issue type id
+ # @param substitute_type_id [Integer, String] Issue type id to change linked issue
+ # @return [BacklogKit::Response] The issue type information
def remove_issue_type(project_id_or_key, type_id, substitute_type_id)
delete("projects/#{project_id_or_key}/issueTypes/#{type_id}", substitute_issue_type_id: substitute_type_id)
end
+ # Get list of categories
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] List of categories
def get_categories(project_id_or_key)
get("projects/#{project_id_or_key}/categories")
end
+ # Add a category to a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param name [String] Category name
+ # @return [BacklogKit::Response] The category information
def add_category(project_id_or_key, name)
post("projects/#{project_id_or_key}/categories", name: name)
end
+ # Update a category
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param category_id [Integer, String] Category id
+ # @param name [String] Category name
+ # @return [BacklogKit::Response] The category information
def update_category(project_id_or_key, category_id, name)
patch("projects/#{project_id_or_key}/categories/#{category_id}", name: name)
end
+ # Remove a category from project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param category_id [Integer, String] Category id
+ # @return [BacklogKit::Response] The category information
def remove_category(project_id_or_key, category_id)
delete("projects/#{project_id_or_key}/categories/#{category_id}")
end
+ # Get list of versions
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] List of versions
def get_versions(project_id_or_key)
get("projects/#{project_id_or_key}/versions")
end
+ # Add a version to a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param name [String] Version name
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The version information
def add_version(project_id_or_key, name, params = {})
params.merge!(name: name)
post("projects/#{project_id_or_key}/versions", params)
end
+ # Update a version
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param version_id [Integer, String] Version id
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The version information
def update_version(project_id_or_key, version_id, params = {})
patch("projects/#{project_id_or_key}/versions/#{version_id}", params)
end
+ # Remove a version from project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param version_id [Integer, String] Version id
+ # @return [BacklogKit::Response] The version information
def remove_version(project_id_or_key, version_id)
delete("projects/#{project_id_or_key}/versions/#{version_id}")
end
+ # Get list of shared files
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param directory_path [String] Directory path
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] List of files
def get_shared_files(project_id_or_key, directory_path = '', params = {})
get("projects/#{project_id_or_key}/files/metadata/#{directory_path}", params)
end
+ # Download a shared file
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param file_id [Integer, String] Shared file id
+ # @return [BacklogKit::Response] Binary data
def download_shared_file(project_id_or_key, file_id)
get("projects/#{project_id_or_key}/files/#{file_id}")
end
+ # Get disk usage
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] The disk usage information
def get_project_disk_usage(project_id_or_key)
get("projects/#{project_id_or_key}/diskUsage")
end
+ # Get list of webhooks
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @return [BacklogKit::Response] List of webhooks
def get_webhooks(project_id_or_key)
get("projects/#{project_id_or_key}/webhooks")
end
+ # Get a webhook
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param webhook_id [Integer, String] Webhook id
+ # @return [BacklogKit::Response] The webhook information
def get_webhook(project_id_or_key, webhook_id)
get("projects/#{project_id_or_key}/webhooks/#{webhook_id}")
end
+ # Add a webhook to a project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param name [String] Webhook name
+ # @param hook_url [String] Webhook URL
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The webhook information
def add_webhook(project_id_or_key, name, hook_url, params = {})
params.merge!(name: name, hook_url: hook_url)
post("projects/#{project_id_or_key}/webhooks", params)
end
+ # Update a webhook
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param webhook_id [Integer, String] Webhook id
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The webhook information
def update_webhook(project_id_or_key, webhook_id, params = {})
patch("projects/#{project_id_or_key}/webhooks/#{webhook_id}", params)
end
+ # Remove a webhook from project
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param webhook_id [Integer, String] Webhook id
+ # @return [BacklogKit::Response] The webhook information
def remove_webhook(project_id_or_key, webhook_id)
delete("projects/#{project_id_or_key}/webhooks/#{webhook_id}")
+ end
+
+ # Get list of pull requests
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @return [BacklogKit::Response] List of pull requests
+ def get_pull_requests(project_id_or_key, repository_id_or_name)
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests")
+ end
+
+ # Get number of pull requests
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @return [BacklogKit::Response] Number of pull requests
+ def get_pull_request_count(project_id_or_key, repository_id_or_name)
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/count")
+ end
+
+ # Get a pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @return [BacklogKit::Response] The pull request information
+ def get_pull_request(project_id_or_key, repository_id_or_name, pull_request_number)
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}")
+ end
+
+ # Create a new pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The pull request information
+ def create_pull_request(project_id_or_key, repository_id_or_name, params = {})
+ post("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests", params)
+ end
+
+ # Update a pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The pull request information
+ def update_pull_request(project_id_or_key, repository_id_or_name, pull_request_number, params = {})
+ patch("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}", params)
+ end
+
+ # Get list of comments in pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @return [BacklogKit::Response] List of comments
+ def get_pull_request_comments(project_id_or_key, repository_id_or_name, pull_request_number)
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}/comments")
+ end
+
+ # Get number of comments in pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @return [BacklogKit::Response] Number of comments
+ def get_pull_request_comment_count(project_id_or_key, repository_id_or_name, pull_request_number)
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}/comments/count")
+ end
+
+ # Add a comment to a pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @param params [Hash] Request parameters
+ # @return [BacklogKit::Response] The comment information
+ def add_pull_request_comment(project_id_or_key, repository_id_or_name, pull_request_number, params = {})
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}/comments", params)
+ end
+
+ # Update a comment in pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @param comment_id [Integer, String] Comment id
+ # @param content [String] Content of the comment
+ # @return [BacklogKit::Response] The comment information
+ def update_pull_request_comment(project_id_or_key, repository_id_or_name, pull_request_number, comment_id, content)
+ patch("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}/comments/#{comment_id}", content: content)
+ end
+
+ # Get list of attachment files on pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @return [BacklogKit::Response] List of files
+ def get_pull_request_attachments(project_id_or_key, repository_id_or_name, pull_request_number)
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}/attachments")
+ end
+
+ # Download an attachment file on pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @param attachment_id [Integer, String] Attachment file id
+ # @return [BacklogKit::Response] Binary data
+ def download_pull_request_attachment(project_id_or_key, repository_id_or_name, pull_request_number, attachment_id)
+ get("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}/attachments/#{attachment_id}")
+ end
+
+ # Remove an attachment file from pull request
+ #
+ # @param project_id_or_key [Integer, String] Project id or project key
+ # @param repository_id_or_name [Integer, String] Repository id or repository name
+ # @param pull_request_number [Integer, String] Pull request number
+ # @param attachment_id [Integer, String] Attachment file id
+ # @return [BacklogKit::Response] The pull request information
+ def remove_pull_request_attachment(project_id_or_key, repository_id_or_name, pull_request_number, attachment_id)
+ delete("projects/#{project_id_or_key}/git/repositories/#{repository_id_or_name}/pullRequests/#{pull_request_number}/attachments/#{attachment_id}")
end
end
end
end