projects.rb 1.44 KB
module Gitlab
  # Projects API
  class Projects < Grape::API
    before { authenticate! }

    resource :projects do
      # Get a projects list for authenticated user
      #
      # Example Request:
      #   GET /projects
      get do
        @projects = current_user.projects
        present @projects, :with => Entities::Project
      end

      # Get a single project
      #
      # Parameters:
      #   id (required) - The code of a project
      # Example Request:
      #   GET /projects/:id
      get ":id" do
        @project = current_user.projects.find_by_code(params[:id])
        present @project, :with => Entities::Project
      end

      # Get a project repository branches
      #
      # Parameters:
      #   id (required) - The code of a project
      # Example Request:
      #   GET /projects/:id/repository/branches
      get ":id/repository/branches" do
        @project = current_user.projects.find_by_code(params[:id])
        present @project.repo.heads.sort_by(&:name), :with => Entities::ProjectRepositoryBranches
      end

      # Get a project repository tags
      #
      # Parameters:
      #   id (required) - The code of a project
      # Example Request:
      #   GET /projects/:id/repository/tags
      get ":id/repository/tags" do
        @project = current_user.projects.find_by_code(params[:id])
        present @project.repo.tags.sort_by(&:name).reverse, :with => Entities::ProjectRepositoryTags
      end
    end
  end
end