Add support for deleting branches via the Bitbucket Server API

This commit is contained in:
Stan Hu
2018-07-13 15:39:24 -07:00
parent ec4109d413
commit c793252e8b
3 changed files with 55 additions and 1 deletions

View File

@ -36,6 +36,15 @@ module BitbucketServer
connection.post("/projects/#{project_key}/repos/#{repo}/branches", payload.to_json)
end
def delete_branch(project_key, repo, branch_name, sha)
payload = {
name: Gitlab::Git::BRANCH_REF_PREFIX + branch_name,
dryRun: false
}
connection.delete(:branches, "/projects/#{project_key}/repos/#{repo}/branches", payload.to_json)
end
private
def get_collection(path, type)

View File

@ -36,10 +36,27 @@ module BitbucketServer
response.parsed_response
end
# We need to support two different APIs for deletion:
#
# /rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/branches/default
# /rest/branch-utils/1.0/projects/{projectKey}/repos/{repositorySlug}/branches
def delete(resource, path, body)
url = delete_url(resource, path)
response = Gitlab::HTTP.delete(url,
basic_auth: auth,
headers: post_headers,
body: body)
check_errors!(response)
response.parsed_response
end
private
def check_errors!(response)
return if response.code == 200
return if response.code >= 200 && response.code < 300
details =
if response.parsed_response && response.parsed_response.is_a?(Hash)
@ -68,5 +85,13 @@ module BitbucketServer
def root_url
"#{base_uri}/rest/api/#{api_version}"
end
def delete_url(resource, path)
if resource == :branches
"#{base_uri}/branch-utils/#{api_version}#{path}"
else
build_url(path)
end
end
end
end