Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/api.rb1
-rw-r--r--lib/api/commits.rb29
-rw-r--r--lib/api/entities.rb5
-rw-r--r--lib/api/helpers.rb2
-rw-r--r--lib/api/milestones.rb6
-rw-r--r--lib/api/projects.rb4
6 files changed, 46 insertions, 1 deletions
diff --git a/lib/api.rb b/lib/api.rb
index 3b62f31bf32..f4e9e5fcc13 100644
--- a/lib/api.rb
+++ b/lib/api.rb
@@ -19,5 +19,6 @@ module Gitlab
mount Milestones
mount Keys
mount Session
+ mount Commits
end
end
diff --git a/lib/api/commits.rb b/lib/api/commits.rb
new file mode 100644
index 00000000000..47d96fc4906
--- /dev/null
+++ b/lib/api/commits.rb
@@ -0,0 +1,29 @@
+module Gitlab
+ # Commits API
+ class Commits < Grape::API
+ before { authenticate! }
+
+ resource :projects do
+ # Get a list of project commits
+ #
+ # Parameters:
+ # id (required) - The ID or code name of a project
+ # ref_name (optional) - Name of branch or tag
+ # page (optional) - default is 0
+ # per_page (optional) - default is 20
+ # Example Request:
+ # GET /projects/:id/commits
+ get ":id/commits" do
+ authorize! :download_code, user_project
+
+ page = params[:page] || 0
+ per_page = params[:per_page] || 20
+ ref = params[:ref_name] || user_project.try(:default_branch) || 'master'
+
+ commits = user_project.commits(ref, nil, per_page, page * per_page)
+
+ present CommitDecorator.decorate(commits), with: Entities::Commit
+ end
+ end
+ end
+end
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 9e5723245dc..fd19fa0e87f 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -17,6 +17,11 @@ module Gitlab
expose :id, :url
end
+ class Commit < Grape::Entity
+ expose :id, :short_id, :title,
+ :author_name, :author_email, :created_at
+ end
+
class Project < Grape::Entity
expose :id, :code, :name, :description, :path, :default_branch
expose :owner, using: Entities::UserBasic
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 9a08b995800..14390545bd5 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -61,7 +61,7 @@ module Gitlab
error!({'message' => message}, status)
end
- private
+ private
def abilities
@abilities ||= begin
diff --git a/lib/api/milestones.rb b/lib/api/milestones.rb
index daaff940325..f55dfd04cc5 100644
--- a/lib/api/milestones.rb
+++ b/lib/api/milestones.rb
@@ -11,6 +11,8 @@ module Gitlab
# Example Request:
# GET /projects/:id/milestones
get ":id/milestones" do
+ authorize! :read_milestone, user_project
+
present paginate(user_project.milestones), with: Entities::Milestone
end
@@ -22,6 +24,8 @@ module Gitlab
# Example Request:
# GET /projects/:id/milestones/:milestone_id
get ":id/milestones/:milestone_id" do
+ authorize! :read_milestone, user_project
+
@milestone = user_project.milestones.find(params[:milestone_id])
present @milestone, with: Entities::Milestone
end
@@ -36,6 +40,8 @@ module Gitlab
# Example Request:
# POST /projects/:id/milestones
post ":id/milestones" do
+ authorize! :admin_milestone, user_project
+
attrs = attributes_for_keys [:title, :description, :due_date]
@milestone = user_project.milestones.new attrs
if @milestone.save
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 456b8a7714d..0554d97c86b 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -234,6 +234,8 @@ module Gitlab
# Example Request:
# POST /projects/:id/snippets
post ":id/snippets" do
+ authorize! :write_snippet, user_project
+
attrs = attributes_for_keys [:title, :file_name]
attrs[:expires_at] = params[:lifetime] if params[:lifetime].present?
attrs[:content] = params[:code] if params[:code].present?
@@ -309,6 +311,8 @@ module Gitlab
# Example Request:
# GET /projects/:id/repository/commits/:sha/blob
get ":id/repository/commits/:sha/blob" do
+ authorize! :download_code, user_project
+
ref = params[:sha]
commit = user_project.commit ref