diff --git a/README.md b/README.md index c00e5785a..d6fe99fc6 100644 --- a/README.md +++ b/README.md @@ -1348,19 +1348,24 @@ curl -X GET http://localhost:3000/api/projects/mirror_demo/branches | jq ``` --- -### 获取版本列表 +### 获取代码库标签列表 ``` GET /api/repositories/:id/tags ``` *示例* ``` -curl -X GET http://localhost:3000/api/repositories/124/tags.json | jq +curl -X GET \ +-d "limit=20" \ +-d "page=1" \ +http://localhost:3000/api/repositories/5836/tags.json | jq ``` *请求参数说明:* |参数名|必选|类型|说明| |-|-|-|-| -|id |是|int |项目id | +|id |是|int |仓库id | +|page |否|string |页数,第几页 | +|limit |否|string |每页多少条数据,默认20条 | *返回参数说明:* diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index b834935b8..bb4506b94 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -2,8 +2,8 @@ class RepositoriesController < ApplicationController include ApplicationHelper include OperateProjectAbilityAble before_action :require_login, only: %i[edit update create_file update_file delete_file sync_mirror] - before_action :find_project, :authorizate! - before_action :find_repository, only: %i[sync_mirror] + before_action :find_project, :authorizate!, except: :tags + before_action :find_repository, only: %i[sync_mirror tags] before_action :authorizate_user_can_edit_project!, only: %i[sync_mirror] def show @@ -49,7 +49,7 @@ class RepositoriesController < ApplicationController end def tags - @tags = Gitea::Repository::Tags::ListService.new(@project, @project.identifier).call + @tags = Gitea::Repository::Tags::ListService.new(current_user&.gitea_token, @repo.user.login, @repo.identifier, {page: params[:page], limit: params[:limit]}).call end def edit diff --git a/app/services/gitea/client_service.rb b/app/services/gitea/client_service.rb index 67e804bf7..9f9084ffb 100644 --- a/app/services/gitea/client_service.rb +++ b/app/services/gitea/client_service.rb @@ -17,7 +17,6 @@ class Gitea::ClientService < ApplicationService # } def post(url, params={}) puts "[gitea] request params: #{params}" - Rails.logger.info("##########___________post_params__________########{params}") request_url = [api_url, url].join('').freeze auth_token = authen_params(params[:token]) response = conn(auth_token).post do |req| diff --git a/app/services/gitea/repository/tags/list_service.rb b/app/services/gitea/repository/tags/list_service.rb index 3e997353e..e1f139820 100644 --- a/app/services/gitea/repository/tags/list_service.rb +++ b/app/services/gitea/repository/tags/list_service.rb @@ -1,25 +1,35 @@ class Gitea::Repository::Tags::ListService < Gitea::ClientService - attr_reader :user, :repo_name + attr_reader :token, :owner, :repo, :params # ref: The name of the commit/branch/tag. Default the repository’s default branch (usually master) - # repo_name: the name of repository - def initialize(user, repo_name) - @user = user - @repo_name = repo_name + # repo: the name of repository + def initialize(token, owner, repo, params={}) + @token = token + @owner = owner + @repo = repo + @params = params end def call - response = get(url, params) + response = get(url, request_params) render_result(response) end private - def params - Hash.new.merge(token: user.gitea_token) + def request_params + Hash.new.merge(token: token, page: set_page, limit: set_limit) + end + + def set_page + (params[:page] || 1).to_i + end + + def set_limit + (params[:limit] || 50).to_i end def url - "/repos/#{user.login}/#{repo_name}/tags".freeze + "/repos/#{owner}/#{repo}/tags".freeze end def render_result(response)