mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-16 17:55:56 +08:00
ADD repository languages percentage api
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
module Repository::LanguagesPercentagable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
def languages_precentagable
|
||||
result = Gitea::Repository::Languages::ListService.call(@owner.login,
|
||||
@repository.identifier, current_user&.gitea_token)
|
||||
|
||||
result[:status] === :success ? hash_transform_precentagable(result[:body]) : nil
|
||||
end
|
||||
|
||||
# hash eq:{"JavaScript": 301681522,"Ruby": 1444004,"Roff": 578781}
|
||||
def hash_transform_precentagable(hash)
|
||||
total_byte_size = hash.values.sum
|
||||
hash.transform_values { |v|
|
||||
ActionController::Base.helpers
|
||||
.number_to_percentage((v * 100.0 / total_byte_size), precision: 1)
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,7 @@
|
||||
class RepositoriesController < ApplicationController
|
||||
include ApplicationHelper
|
||||
include OperateProjectAbilityAble
|
||||
include Repository::LanguagesPercentagable
|
||||
|
||||
before_action :require_login, only: %i[edit update create_file update_file delete_file sync_mirror]
|
||||
before_action :load_repository
|
||||
@@ -140,6 +141,10 @@ class RepositoriesController < ApplicationController
|
||||
render json: @readme
|
||||
end
|
||||
|
||||
def languages
|
||||
render json: languages_precentagable
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def find_project
|
||||
|
||||
39
app/services/gitea/repository/languages/list_service.rb
Normal file
39
app/services/gitea/repository/languages/list_service.rb
Normal file
@@ -0,0 +1,39 @@
|
||||
# Get languages and number of bytes of code written
|
||||
class Gitea::Repository::Languages::ListService < Gitea::ClientService
|
||||
attr_reader :owner, :repo, :token
|
||||
|
||||
# owner: owner of the repo
|
||||
# repo: the name of repository
|
||||
# token: token of gitea user
|
||||
# eq: Gitea::Repository::Languages::ListService.call(@owner.identifier,
|
||||
# @project.identifier, current_user&.gitea_token)
|
||||
def initialize(owner, repo, token)
|
||||
@owner = owner
|
||||
@repo = repo
|
||||
@args = token
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
|
||||
status, message, body = render_response(response)
|
||||
json_format(status, message, body)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
{}.merge(token: token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{owner}/#{repo}/languages".freeze
|
||||
end
|
||||
|
||||
def json_format(status, message, body)
|
||||
case status
|
||||
when 200 then success(body)
|
||||
else
|
||||
error(message, status)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user