Class: BitBucket::Client::Repos::PullRequests
- Defined in:
- lib/bitbucket_rest_api/client/repos/pull_requests.rb
Defined Under Namespace
Classes: Activity, Comments, Commits
Constant Summary collapse
- VALID_PULL_REQUEST_PARAM_NAMES =
%w[ title description source destination reviewers close_source_branch ].freeze
- VALID_PULL_REQUEST_STATE_VALUES =
{ state: ['OPEN', 'MERGED', 'DECLINED'] }
Constants included from Validations
Constants included from Validations::Token
Validations::Token::TOKEN_REQUIRED, Validations::Token::TOKEN_REQUIRED_REGEXP
Constants included from BitBucket::Constants
BitBucket::Constants::ACCEPT, BitBucket::Constants::ACCEPT_CHARSET, BitBucket::Constants::CACHE_CONTROL, BitBucket::Constants::CONTENT_LENGTH, BitBucket::Constants::CONTENT_TYPE, BitBucket::Constants::DATE, BitBucket::Constants::ETAG, BitBucket::Constants::LOCATION, BitBucket::Constants::META_FIRST, BitBucket::Constants::META_LAST, BitBucket::Constants::META_NEXT, BitBucket::Constants::META_PREV, BitBucket::Constants::META_REL, BitBucket::Constants::PARAM_PAGE, BitBucket::Constants::PARAM_START_PAGE, BitBucket::Constants::QUERY_STR_SEP, BitBucket::Constants::RATELIMIT_LIMIT, BitBucket::Constants::RATELIMIT_REMAINING, BitBucket::Constants::SERVER, BitBucket::Constants::USER_AGENT
Instance Attribute Summary
Attributes inherited from API
Instance Method Summary collapse
-
#activity(user_name, repo_name) ⇒ Object
Get a log of all activity for a pull request.
-
#approve(user_name, repo_name, pull_request_id) ⇒ Object
Give approval on a pull request.
-
#create(user_name, repo_name, params = {}) ⇒ Object
Create a pull request.
-
#decline(user_name, repo_name, pull_request_id) ⇒ Object
(also: #reject)
Decline or reject a single pull request.
-
#diff(user_name, repo_name, pull_request_id) ⇒ Object
Get the diff for a pull request.
-
#get(user_name, repo_name, pull_request_id, params = { }) ⇒ Object
(also: #find)
Get a single pull request.
-
#list(*args) ⇒ Object
(also: #all)
List pull requests for a repository.
-
#update(user_name, repo_name, pull_request_id, params = {}) ⇒ Object
(also: #edit)
Edit a pull request.
Methods inherited from API
#_merge_user_into_params!, #_merge_user_repo_into_params!, #_update_user_repo_params, #api_methods_in, #append_arguments, #arguments, extract_class_name, inherited, #initialize, #method_missing, namespace, #process_basic_auth, #set, #set_api_client, #setup, #with, #yield_or_eval
Methods included from BitBucket::ClassMethods
#configuration, #configure, #require_all
Methods included from Normalizer
Methods included from ParameterFilter
Methods included from Validations::Required
Methods included from Validations::Token
Methods included from Validations::Format
Methods included from Validations::Presence
Methods included from Request::Verbs
#delete_request, #get_request, #options_request, #patch_request, #post_request, #put_request
Methods included from Authorization
#authenticated?, #authentication, #basic_authed?
Constructor Details
This class inherits a constructor from BitBucket::API
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class BitBucket::API
Instance Method Details
#activity(user_name, repo_name) ⇒ Object
198 199 200 201 202 203 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 198 def activity(user_name, repo_name) _update_user_repo_params(user_name, repo_name) _validate_user_repo_params(user, repo) unless user? && repo? get_request("/repositories/#{user}/#{repo}/pullrequests/activity") end |
#approve(user_name, repo_name, pull_request_id) ⇒ Object
170 171 172 173 174 175 176 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 170 def approve(user_name, repo_name, pull_request_id) _update_user_repo_params(user_name, repo_name) _validate_user_repo_params(user, repo) unless user? && repo? _validate_presence_of pull_request_id post_request("/repositories/#{user}/#{repo}/pullrequests/#{pull_request_id}/approve") end |
#create(user_name, repo_name, params = {}) ⇒ Object
Create a pull request
Inputs
<tt>:title</tt> - Required string
<tt>:description</tt> - Optional string
<tt>:source</tt> - Required hash - The source branch name and/or repository (for example, { develop)
* <tt>{ "branch": { "name": "REQUIRED branch_name" }, "repository": { "full_name": "owner/repo_slug" } }</tt>
<tt>:destination</tt> - Optional hash - The destination branch or commit
* <tt>{ "branch": { "name": "branch_name" }, "commit": { "hash": "name" } }</tt>
<tt>:reviewers</tt> - Optional array - Users currently reviewiing the pull
* <tt>[{ "username": "accountname" }]</tt>
Examples
bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
bitbucket.repos.pull_requests.create
"title" => "Fixes a bug",
"description" => "Fixes not being able to see anything.",
"source" => { "branch" => { "name" => "bug-fixes" } },
"destination" => { "branch" => { "name" => "master" } },
"reviewers" => [ { "username" => "octocat" } ],
"close_source_branch" => true
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 94 def create(user_name, repo_name, params={}) _update_user_repo_params(user_name, repo_name) _validate_user_repo_params(user, repo) unless user? && repo? normalize! params filter! VALID_PULL_REQUEST_PARAM_NAMES , params assert_required_keys(%w[ title source ], params) post_request("/repositories/#{user}/#{repo.downcase}/pullrequests/", params) end |
#decline(user_name, repo_name, pull_request_id) ⇒ Object Also known as: reject
155 156 157 158 159 160 161 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 155 def decline(user_name, repo_name, pull_request_id) _update_user_repo_params(user_name, repo_name) _validate_user_repo_params(user, repo) unless user? && repo? _validate_presence_of pull_request_id post_request("/repositories/#{user}/#{repo}/pullrequests/#{pull_request_id}/decline") end |
#diff(user_name, repo_name, pull_request_id) ⇒ Object
184 185 186 187 188 189 190 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 184 def diff(user_name, repo_name, pull_request_id) _update_user_repo_params(user_name, repo_name) _validate_user_repo_params(user, repo) unless user? && repo? _validate_presence_of pull_request_id get_request("/repositories/#{user}/#{repo}/pullrequests/#{pull_request_id}/diff") end |
#get(user_name, repo_name, pull_request_id, params = { }) ⇒ Object Also known as: find
60 61 62 63 64 65 66 67 68 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 60 def get(user_name, repo_name, pull_request_id, params={ }) _update_user_repo_params(user_name, repo_name) _validate_user_repo_params(user, repo) unless user? && repo? _validate_presence_of pull_request_id normalize! params get_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}", params) end |
#list(*args) ⇒ Object Also known as: all
List pull requests for a repository
Inputs
<tt>:state</tt> - Optional - State of the pull request (OPEN, MERGED, DECLINED)
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 36 def list(*args) args = { user: self.user, repo: self.repo.downcase, state: 'OPEN'}.merge(Hash[*args]) #_update_user_repo_params(user_name, repo_name) #_validate_user_repo_params(user, repo) unless user? && repo? params = arguments([args], required: [:user, :repo]) do assert_values VALID_PULL_REQUEST_STATE_VALUES end.params # Bitbucket requires the state to be all caps or it returns all params['state'] = params['state'].upcase response = get_request("/repositories/#{args[:user]}/#{args[:repo]}/pullrequests", params) return response unless block_given? response.each { |el| yield el } end |
#update(user_name, repo_name, pull_request_id, params = {}) ⇒ Object Also known as: edit
Edit a pull request
Inputs
<tt>:title</tt> - Required string
<tt>:description</tt> - Optional string
<tt>:destination</tt> - Optional hash - The destination branch or commit
* <tt>{ "branch": { "name": "branch_name" }, "commit": { "hash": "name" } }</tt>
<tt>:reviewers</tt> - Optional array - Users currently reviewiing the pull
* <tt>[{ "username": "accountname" }]</tt>
Examples
bitbucket = BitBucket.new
bitbucket.repos.pull_requests.update 'user-name', 'repo-name', 'pull-request-id',
"title" => "Fixes a bug",
"description" => "Fixes not being able to see anything.",
"destination" => { "branch" => { "name" => "master" } },
"reviewers" => [ { "username" => "octocat" } ],
"close_source_branch" => true
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/bitbucket_rest_api/client/repos/pull_requests.rb', line 124 def update(user_name, repo_name, pull_request_id, params={}) _update_user_repo_params(user_name, repo_name) _validate_user_repo_params(user, repo) unless user? && repo? _validate_presence_of pull_request_id # BitBucket will drop any data if it is not included, so we have to check for pre-existing data existing_pull = get(user_name, repo_name, pull_request_id) existing_pull_data = { 'title' => existing_pull.title, 'description' => existing_pull.description, 'destination' => { 'branch' => existing_pull.destination.branch }, 'reviewers' => existing_pull.reviewers, 'close_source_branch' => existing_pull.close_source_branch } params = normalize!(existing_pull_data).merge!(normalize!(params)) filter! VALID_PULL_REQUEST_PARAM_NAMES.reject{|param| param == 'source'}, params assert_required_keys(%w[ title ], params) put_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/", params) end |