diff options
author | Dmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com> | 2012-09-21 13:22:30 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com> | 2012-09-21 13:22:30 +0300 |
commit | 10d3a30b255cd85b2cf7af39814fd7418eecd838 (patch) | |
tree | 1082a03374c7130ad33f9136d0d41f979bfe603c /lib | |
parent | 4cc169d3cacea7e4325bb5632cc8878a7c3f41fe (diff) | |
download | gitlab-ce-10d3a30b255cd85b2cf7af39814fd7418eecd838.tar.gz |
APi for commits. Better api docs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api.rb | 1 | ||||
-rw-r--r-- | lib/api/commits.rb | 29 | ||||
-rw-r--r-- | lib/api/entities.rb | 5 | ||||
-rw-r--r-- | lib/api/helpers.rb | 2 | ||||
-rw-r--r-- | lib/api/milestones.rb | 6 | ||||
-rw-r--r-- | lib/api/projects.rb | 20 |
6 files changed, 54 insertions, 9 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 a8b786aebb0..1909a016208 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 1d9004f8eed..d6ff02c3cd2 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -40,14 +40,14 @@ module Gitlab post do params[:code] ||= params[:name] params[:path] ||= params[:name] - attrs = attributes_for_keys [:code, - :path, - :name, - :description, - :default_branch, - :issues_enabled, - :wall_enabled, - :merge_requests_enabled, + attrs = attributes_for_keys [:code, + :path, + :name, + :description, + :default_branch, + :issues_enabled, + :wall_enabled, + :merge_requests_enabled, :wiki_enabled] @project = Project.create_by_user(attrs, current_user) if @project.saved? @@ -207,6 +207,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? @@ -282,6 +284,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 |