Commit 1e6766f9edb2a9bda18e89acef64ee03e8d3b2e4

Authored by Sean Edge
1 parent 3e1853c5

Add CreateTagService. Use new service to allow tag creation through API.

app/services/create_tag_service.rb 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +class CreateTagService
  2 + def execute(project, tag_name, ref, current_user)
  3 + repository = project.repository
  4 + repository.add_tag(tag_name, ref)
  5 + new_tag = repository.find_tag(tag_name)
  6 +
  7 + if new_tag
  8 + Event.create_ref_event(project, current_user, new_tag, 'add', 'refs/tags')
  9 + end
  10 +
  11 + new_tag
  12 + end
  13 +end
... ...
lib/api/repositories.rb
... ... @@ -25,6 +25,22 @@ module API
25 25 present user_project.repo.tags.sort_by(&:name).reverse, with: Entities::RepoObject, project: user_project
26 26 end
27 27  
  28 + # Create tag
  29 + #
  30 + # Parameters:
  31 + # id (required) - The ID of a project
  32 + # tag_name (required) - The name of the tag
  33 + # ref (required) - Create tag from commit sha or branch
  34 + # Example Request:
  35 + # POST /projects/:id/repository/tags
  36 + post ':id/repository/tags' do
  37 + authorize_push_project
  38 + @tag = CreateTagService.new.execute(user_project, params[:tag_name],
  39 + params[:ref], current_user)
  40 +
  41 + present @tag, with: Entities::RepoObject, project: user_project
  42 + end
  43 +
28 44 # Get a project repository tree
29 45 #
30 46 # Parameters:
... ...