summaryrefslogtreecommitdiff
path: root/lib/api/repositories.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/repositories.rb')
-rw-r--r--lib/api/repositories.rb94
1 files changed, 45 insertions, 49 deletions
diff --git a/lib/api/repositories.rb b/lib/api/repositories.rb
index 32e05d84491..2545236b3fa 100644
--- a/lib/api/repositories.rb
+++ b/lib/api/repositories.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-require 'mime/types'
+require "mime/types"
module API
class Repositories < Grape::API
@@ -9,7 +9,7 @@ module API
before { authorize! :download_code, user_project }
params do
- requires :id, type: String, desc: 'The ID of a project'
+ requires :id, type: String, desc: "The ID of a project"
end
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
helpers do
@@ -30,120 +30,116 @@ module API
@blob = Gitlab::Git::Blob.raw(@repo, params[:sha])
@blob.load_all_data!(@repo)
rescue
- not_found! 'Blob'
+ not_found! "Blob"
end
- not_found! 'Blob' unless @blob
+ not_found! "Blob" unless @blob
end
end
- desc 'Get a project repository tree' do
+ desc "Get a project repository tree" do
success Entities::TreeObject
end
params do
- optional :ref, type: String, desc: 'The name of a repository branch or tag, if not given the default branch is used'
- optional :path, type: String, desc: 'The path of the tree'
- optional :recursive, type: Boolean, default: false, desc: 'Used to get a recursive tree'
+ optional :ref, type: String, desc: "The name of a repository branch or tag, if not given the default branch is used"
+ optional :path, type: String, desc: "The path of the tree"
+ optional :recursive, type: Boolean, default: false, desc: "Used to get a recursive tree"
use :pagination
end
- get ':id/repository/tree' do
- ref = params[:ref] || user_project.try(:default_branch) || 'master'
+ get ":id/repository/tree" do
+ ref = params[:ref] || user_project.try(:default_branch) || "master"
path = params[:path] || nil
commit = user_project.commit(ref)
- not_found!('Tree') unless commit
+ not_found!("Tree") unless commit
tree = user_project.repository.tree(commit.id, path, recursive: params[:recursive])
entries = ::Kaminari.paginate_array(tree.sorted_entries)
present paginate(entries), with: Entities::TreeObject
end
- desc 'Get raw blob contents from the repository'
+ desc "Get raw blob contents from the repository"
params do
- requires :sha, type: String, desc: 'The commit hash'
+ requires :sha, type: String, desc: "The commit hash"
end
- get ':id/repository/blobs/:sha/raw' do
+ get ":id/repository/blobs/:sha/raw" do
assign_blob_vars!
send_git_blob @repo, @blob
end
- desc 'Get a blob from the repository'
+ desc "Get a blob from the repository"
params do
- requires :sha, type: String, desc: 'The commit hash'
+ requires :sha, type: String, desc: "The commit hash"
end
- get ':id/repository/blobs/:sha' do
+ get ":id/repository/blobs/:sha" do
assign_blob_vars!
{
size: @blob.size,
encoding: "base64",
content: Base64.strict_encode64(@blob.data),
- sha: @blob.id
+ sha: @blob.id,
}
end
- desc 'Get an archive of the repository'
+ desc "Get an archive of the repository"
params do
- optional :sha, type: String, desc: 'The commit sha of the archive to be downloaded'
- optional :format, type: String, desc: 'The archive format'
- end
- get ':id/repository/archive', requirements: { format: Gitlab::PathRegex.archive_formats_regex } do
- begin
- send_git_archive user_project.repository, ref: params[:sha], format: params[:format], append_sha: true
- rescue
- not_found!('File')
- end
+ optional :sha, type: String, desc: "The commit sha of the archive to be downloaded"
+ optional :format, type: String, desc: "The archive format"
+ end
+ get ":id/repository/archive", requirements: {format: Gitlab::PathRegex.archive_formats_regex} do
+ send_git_archive user_project.repository, ref: params[:sha], format: params[:format], append_sha: true
+ rescue
+ not_found!("File")
end
- desc 'Compare two branches, tags, or commits' do
+ desc "Compare two branches, tags, or commits" do
success Entities::Compare
end
params do
- requires :from, type: String, desc: 'The commit, branch name, or tag name to start comparison'
- requires :to, type: String, desc: 'The commit, branch name, or tag name to stop comparison'
- optional :straight, type: Boolean, desc: 'Comparison method, `true` for direct comparison between `from` and `to` (`from`..`to`), `false` to compare using merge base (`from`...`to`)', default: false
+ requires :from, type: String, desc: "The commit, branch name, or tag name to start comparison"
+ requires :to, type: String, desc: "The commit, branch name, or tag name to stop comparison"
+ optional :straight, type: Boolean, desc: "Comparison method, `true` for direct comparison between `from` and `to` (`from`..`to`), `false` to compare using merge base (`from`...`to`)", default: false
end
- get ':id/repository/compare' do
+ get ":id/repository/compare" do
compare = Gitlab::Git::Compare.new(user_project.repository.raw_repository, params[:from], params[:to], straight: params[:straight])
present compare, with: Entities::Compare
end
- desc 'Get repository contributors' do
+ desc "Get repository contributors" do
success Entities::Contributor
end
params do
use :pagination
- optional :order_by, type: String, values: %w[email name commits], default: 'commits', desc: 'Return contributors ordered by `name` or `email` or `commits`'
- optional :sort, type: String, values: %w[asc desc], default: 'asc', desc: 'Sort by asc (ascending) or desc (descending)'
- end
- get ':id/repository/contributors' do
- begin
- contributors = ::Kaminari.paginate_array(user_project.repository.contributors(order_by: params[:order_by], sort: params[:sort]))
- present paginate(contributors), with: Entities::Contributor
- rescue
- not_found!
- end
+ optional :order_by, type: String, values: %w[email name commits], default: "commits", desc: "Return contributors ordered by `name` or `email` or `commits`"
+ optional :sort, type: String, values: %w[asc desc], default: "asc", desc: "Sort by asc (ascending) or desc (descending)"
+ end
+ get ":id/repository/contributors" do
+ contributors = ::Kaminari.paginate_array(user_project.repository.contributors(order_by: params[:order_by], sort: params[:sort]))
+ present paginate(contributors), with: Entities::Contributor
+ rescue
+ not_found!
end
- desc 'Get the common ancestor between commits' do
+ desc "Get the common ancestor between commits" do
success Entities::Commit
end
params do
requires :refs, type: Array[String]
end
- get ':id/repository/merge_base' do
+ get ":id/repository/merge_base" do
refs = params[:refs]
if refs.size < 2
- render_api_error!('Provide at least 2 refs', 400)
+ render_api_error!("Provide at least 2 refs", 400)
end
merge_base = Gitlab::Git::MergeBase.new(user_project.repository, refs)
if merge_base.unknown_refs.any?
- ref_noun = 'ref'.pluralize(merge_base.unknown_refs.size)
- message = "Could not find #{ref_noun}: #{merge_base.unknown_refs.join(', ')}"
+ ref_noun = "ref".pluralize(merge_base.unknown_refs.size)
+ message = "Could not find #{ref_noun}: #{merge_base.unknown_refs.join(", ")}"
render_api_error!(message, 400)
end