diff options
author | Nihad Abbasov <narkoz.2008@gmail.com> | 2012-06-29 06:34:08 -0700 |
---|---|---|
committer | Nihad Abbasov <narkoz.2008@gmail.com> | 2012-06-29 06:34:08 -0700 |
commit | 378dc55d29a97447315c6181f678cf933afbbb78 (patch) | |
tree | 999cfa2b39fb4b338cac01e98cb72e451fce5ddd /lib/api | |
parent | 1d2c98186014cedc01f04382d507a34a71008ab1 (diff) | |
download | gitlab-ce-378dc55d29a97447315c6181f678cf933afbbb78.tar.gz |
add project snippets API
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/entities.rb | 6 | ||||
-rw-r--r-- | lib/api/projects.rb | 53 |
2 files changed, 59 insertions, 0 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 44a43985602..7129e761a52 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -19,5 +19,11 @@ module Gitlab class ProjectRepositoryTags < Grape::Entity expose :name, :commit end + + class ProjectSnippet < Grape::Entity + expose :id, :title, :file_name + expose :author, :using => Entities::User + expose :expires_at, :updated_at, :created_at + end end end diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 670d3d97acc..815092f4de5 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -45,6 +45,59 @@ module Gitlab @project = current_user.projects.find_by_code(params[:id]) present @project.repo.tags.sort_by(&:name).reverse, :with => Entities::ProjectRepositoryTags end + + # Get a project snippet + # + # Parameters: + # id (required) - The code of a project + # snippet_id (required) - The ID of a project snippet + # Example Request: + # GET /projects/:id/snippets/:snippet_id + get ":id/snippets/:snippet_id" do + @project = current_user.projects.find_by_code(params[:id]) + @snippet = @project.snippets.find(params[:snippet_id]) + present @snippet, :with => Entities::ProjectSnippet + end + + # Create a new project snippet + # + # Parameters: + # id (required) - The code name of a project + # title (required) - The title of a snippet + # file_name (required) - The name of a snippet file + # lifetime (optional) - The expiration date of a snippet + # code (required) - The content of a snippet + # Example Request: + # POST /projects/:id/snippets + post ":id/snippets" do + @project = current_user.projects.find_by_code(params[:id]) + @snippet = @project.snippets.new( + :title => params[:title], + :file_name => params[:file_name], + :expires_at => params[:lifetime], + :content => params[:code] + ) + @snippet.author = current_user + + if @snippet.save + present @snippet, :with => Entities::ProjectSnippet + else + error!({'message' => '404 Not found'}, 404) + end + end + + # Delete a project snippet + # + # Parameters: + # id (required) - The code of a project + # snippet_id (required) - The ID of a project snippet + # Example Request: + # DELETE /projects/:id/snippets/:snippet_id + delete ":id/snippets/:snippet_id" do + @project = current_user.projects.find_by_code(params[:id]) + @snippet = @project.snippets.find(params[:snippet_id]) + @snippet.destroy + end end end end |