Browse Source

新增:贡献者分页

pull/330/head
yystopf 3 years ago
parent
commit
3762a54eff
3 changed files with 24 additions and 8 deletions
  1. +3
    -2
      app/controllers/repositories_controller.rb
  2. +20
    -4
      app/services/gitea/repository/contributors/get_service.rb
  3. +1
    -2
      app/views/repositories/contributors.json.jbuilder

+ 3
- 2
app/controllers/repositories_controller.rb View File

@@ -166,8 +166,9 @@ class RepositoriesController < ApplicationController
if params[:filepath].present? || @project.educoder?
@contributors = []
else
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier)
@contributors = result.is_a?(Hash) && result.key?(:status) ? [] : result
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]})
@total_count = result[:total_count]
@contributors = result.is_a?(Hash) ? result[:body] : []
end
rescue
@contributors = []


+ 20
- 4
app/services/gitea/repository/contributors/get_service.rb View File

@@ -1,22 +1,38 @@
class Gitea::Repository::Contributors::GetService < Gitea::ClientService
attr_reader :owner, :repo_name
attr_reader :owner, :repo_name, :page, :limit

def initialize(owner, repo_name)
def initialize(owner, repo_name, page, limit)
@owner = owner
@repo_name = repo_name
@page = params[:page] || 1
@limit = params[:limit] || 20
end

def call
response = get(url, params)
render_status(response)
render_result(response)
end

private
def params
Hash.new.merge(token: owner.gitea_token)
Hash.new.merge(token: owner.gitea_token, page: page, limit: limit)
end

def url
"/repos/#{owner.login}/#{repo_name}/contributors"
end

def render_result(response)
case response.status
when 200
result = {}
headers = response.headers.to_hash
body = JSON.parse(response.body)
total_count = headers["x-total"]
result.merge(total_count: total_count.to_i, body: body)
else
nil
# {status: -1, message: "#{body['message']}"}
end
end
end

+ 1
- 2
app/views/repositories/contributors.json.jbuilder View File

@@ -1,7 +1,6 @@
total_count = @contributors.size
json.list @contributors.each do |contributor|
json.partial! 'contributor', locals: { contributor: contributor, project: @project }
end
json.total_count total_count
json.total_count @total_count



Loading…
Cancel
Save