更改:贡献者获取规则以及分支列表同步旧版

This commit is contained in:
yystopf 2023-02-23 11:38:16 +08:00
parent 54b7cef1bd
commit de1e931c2f
5 changed files with 42 additions and 20 deletions

View File

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

View File

@ -1,7 +1,7 @@
class Api::V1::Projects::Branches::ListService < ApplicationService class Api::V1::Projects::Branches::ListService < ApplicationService
attr_accessor :project, :token, :owner, :repo, :name, :page, :limit attr_accessor :project, :token, :owner, :repo, :name, :page, :limit
attr_accessor :gitea_data attr_accessor :gitea_data, :gitea_repo_data
def initialize(project, params, token=nil) def initialize(project, params, token=nil)
@project = project @project = project
@ -16,6 +16,8 @@ class Api::V1::Projects::Branches::ListService < ApplicationService
def call def call
load_gitea_data load_gitea_data
gitea_data["default_branch"] = gitea_repo_data["default_branch"]
gitea_data gitea_data
end end
@ -32,9 +34,12 @@ class Api::V1::Projects::Branches::ListService < ApplicationService
end end
def load_gitea_data def load_gitea_data
puts request_params @gitea_data = $gitea_hat_client.get_repos_branches_by_owner_repo(owner, repo, {query: request_params}) rescue nil
@gitea_data = $gitea_client.get_repos_branches_by_owner_repo(owner, repo, {query: request_params}) rescue nil
puts @gitea_data
raise Error, '获取分支列表失败!' unless @gitea_data.is_a?(Hash) raise Error, '获取分支列表失败!' unless @gitea_data.is_a?(Hash)
end end
def load_default_branch
@gitea_repo_data = $gitea_client.get_repos_by_owner_repo('yystopf', 'pig') rescue nil
raise Error, '获取仓库信息失败!' unless @gitea_data.is_a?(Hash)
end
end end

View File

@ -1,22 +1,38 @@
class Gitea::Repository::Contributors::GetService < Gitea::ClientService 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, params={})
@owner = owner @owner = owner
@repo_name = repo_name @repo_name = repo_name
@page = params[:page] || 1
@limit = params[:limit] || 20
end end
def call def call
response = get(url, params, true) response = get(url, params, true)
render_status(response) render_result(response)
end end
private private
def params def params
Hash.new.merge(token: owner.gitea_token) Hash.new.merge(token: owner.gitea_token, page: page, limit: limit)
end end
def url def url
"/repos/#{owner.login}/#{repo_name}/contributors" "/repos/#{owner.login}/#{repo_name}/contributors"
end 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 end

View File

@ -1,15 +1,15 @@
user = $redis_cache.hgetall("v2-owner-common:#{contributor["login"]}-#{contributor["email"]}") user = $redis_cache.hgetall("v2-owner-common:#{contributor["name"]}-#{contributor["email"]}")
if user.blank? if user.blank?
json.contributions contributor["contributions"] json.contributions contributor["commits"]
# json.gid contributor["id"] # json.id contributor["id"]
json.login contributor["login"] json.name contributor["name"]
json.type nil json.type nil
json.name contributor["login"] json.name contributor["name"]
json.image_url User::Avatar.get_letter_avatar_url(contributor["login"]) json.image_url User::Avatar.get_letter_avatar_url(contributor["name"])
else else
json.contributions contributor["contributions"] json.contributions contributor["commits"]
# json.gid contributor["id"] json.id user["id"]
json.login user["login"] json.name user["name"]
json.type user["type"] json.type user["type"]
json.name user["name"] json.name user["name"]
json.image_url user["avatar_url"] json.image_url user["avatar_url"]

View File

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