Merge branch 'standalone_develop' into pre_trustie_server
This commit is contained in:
commit
e09a360e5e
2
Gemfile
2
Gemfile
|
@ -140,4 +140,4 @@ gem 'doorkeeper'
|
|||
|
||||
gem 'doorkeeper-jwt'
|
||||
|
||||
gem 'gitea-client', '~> 0.11.6'
|
||||
gem 'gitea-client', '~> 1.4.1'
|
||||
|
|
|
@ -75,6 +75,7 @@ gitea:
|
|||
access_key_secret: 'password'
|
||||
domain: 'http://www.gitea.example.com'
|
||||
base_url: '/api/v1'
|
||||
hat_base_url: '/api/hat'
|
||||
```
|
||||
|
||||
#### 6. 安装redis环境
|
||||
|
|
|
@ -94,6 +94,20 @@ $(document).on('turbolinks:load', function(){
|
|||
}
|
||||
});
|
||||
});
|
||||
// reset user login times
|
||||
$('.users-list-container').on('click', '.fresh-gitea-token-action', function(){
|
||||
var $action = $(this);
|
||||
|
||||
var userId = $action.data('id');
|
||||
$.ajax({
|
||||
url: '/admins/users/' + userId + '/fresh_gitea_token',
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
success: function() {
|
||||
showSuccessNotify();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ***************** reward grade modal *****************
|
||||
var $rewardGradeModal = $('.admin-users-reward-grade-modal');
|
||||
|
|
|
@ -57,6 +57,12 @@ class Admins::UsersController < Admins::BaseController
|
|||
render_ok
|
||||
end
|
||||
|
||||
|
||||
def fresh_gitea_token
|
||||
@user.fresh_gitea_token
|
||||
render_ok
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def finder_user
|
||||
|
@ -64,8 +70,8 @@ class Admins::UsersController < Admins::BaseController
|
|||
end
|
||||
|
||||
def update_params
|
||||
params.require(:user).permit(%i[lastname nickname gender identity technical_title student_id is_shixun_marker
|
||||
mail phone location location_city school_id department_id admin business is_test
|
||||
password professional_certification authentication login])
|
||||
params.require(:user).permit(%i[lastname nickname gender technical_title is_shixun_marker
|
||||
mail phone location location_city school_id department_id admin
|
||||
password login])
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,6 +4,7 @@ class Api::V1::Projects::TagsController < Api::V1::BaseController
|
|||
def index
|
||||
@release_tags = @repository.version_releases.pluck(:tag_name)
|
||||
@result_object = Api::V1::Projects::Tags::ListService.call(@project, {page: page, limit: limit}, current_user&.gitea_token)
|
||||
puts @result_object
|
||||
end
|
||||
|
||||
before_action :require_operate_above, only: [:destroy]
|
||||
|
|
|
@ -36,7 +36,7 @@ class AttachmentsController < ApplicationController
|
|||
domain = GiteaService.gitea_config[:domain]
|
||||
api_url = GiteaService.gitea_config[:base_url]
|
||||
url = ("/repos"+url.split(base_url + "/api")[1]).gsub('?filepath=', '/').gsub('&', '?')
|
||||
request_url = [domain, api_url, url, "?ref=#{params[:ref]}&access_token=#{current_user&.gitea_token}"].join
|
||||
request_url = [domain, api_url, url, "?ref=#{params[:ref]}&access_token=#{User.where(admin: true).take&.gitea_token}"].join
|
||||
response = Faraday.get(request_url)
|
||||
filename = url.to_s.split("/").pop()
|
||||
else
|
||||
|
|
|
@ -13,7 +13,7 @@ module Repository::LanguagesPercentagable
|
|||
def update_project_language(language)
|
||||
return if @project.project_language.present?
|
||||
db_language = ProjectLanguage.find_or_create_by!(name: language.keys.first.downcase.upcase_first)
|
||||
@project.update_column(:project_language_id, db_language.id)
|
||||
@project.update_attribute(:project_language_id, db_language.id)
|
||||
rescue
|
||||
return
|
||||
end
|
||||
|
|
|
@ -2,10 +2,23 @@ class InstallationsController < ApplicationController
|
|||
include RegisterHelper
|
||||
before_action :require_login
|
||||
|
||||
# app详情
|
||||
def app
|
||||
@bot = Bot.find_by(uid: current_user.id)
|
||||
end
|
||||
|
||||
def index
|
||||
@install_bots = BotInstall.where(:installer_id => current_user.id)
|
||||
end
|
||||
|
||||
def show
|
||||
@install_bot = BotInstall.find params[:id]
|
||||
end
|
||||
|
||||
def repositories
|
||||
@install_bots = BotInstall.where(:installer_id => current_user.id)
|
||||
end
|
||||
|
||||
def update_secret
|
||||
ActiveRecord::Base.transaction do
|
||||
bot = Bot.find params[:id]
|
||||
|
@ -25,17 +38,41 @@ class InstallationsController < ApplicationController
|
|||
render_ok
|
||||
end
|
||||
|
||||
# 同步bot信息,回调地址和名称
|
||||
def update_callback_url
|
||||
bot = Bot.find params[:id]
|
||||
application = Doorkeeper::Application.find_by(uid: bot.client_id, secret: bot.client_secret)
|
||||
application.redirect_uri = bot.oauth_callback_url
|
||||
application.name = bot.name
|
||||
if bot.uid.present?
|
||||
bot_user = User.find_by(id: bot.uid)
|
||||
bot_user.update_column(:nickname, bot.name) if bot_user.present?
|
||||
end
|
||||
application.save
|
||||
render_ok
|
||||
end
|
||||
|
||||
def suspended
|
||||
@install_bot = BotInstall.find params[:id]
|
||||
@install_bot.update_attributes!(state: 0)
|
||||
render_ok
|
||||
end
|
||||
def unsuspended
|
||||
@install_bot = BotInstall.find params[:id]
|
||||
@install_bot.update_attributes!(state: 1)
|
||||
render_ok
|
||||
end
|
||||
def auth_active
|
||||
begin
|
||||
@bot = Bot.find params[:id]
|
||||
tip_exception("该Bot已激活") if Doorkeeper::Application.find_by(uid: @bot.client_id, secret: @bot.client_secret).present?
|
||||
@bot.client_id = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_id].blank?
|
||||
@bot.client_id = SecureRandom.uuid.gsub("-", "") if params[:client_id].blank?
|
||||
@bot.client_secret = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_secret].blank?
|
||||
@bot.private_key = OpenSSL::PKey::RSA::generate(2048).to_s
|
||||
@bot.owner_id = current_user.id
|
||||
ActiveRecord::Base.transaction do
|
||||
# 注册bot对应oauth应用
|
||||
Doorkeeper::Application.create!(name: @bot.name, uid: @bot.client_id, secret: @bot.client_secret, redirect_uri: "https://gitlink.org.cn")
|
||||
Doorkeeper::Application.create!(name: @bot.name, uid: @bot.client_id, secret: @bot.client_secret, redirect_uri: @bot.oauth_callback_url)
|
||||
# 注册bot对应用户
|
||||
result = autologin_register(User.generate_user_login('b'), nil, "#{SecureRandom.hex(6)}", 'bot', nil, @bot.name)
|
||||
tip_exception(-1, result[:message]) if result[:message].present?
|
||||
|
@ -57,9 +94,10 @@ class InstallationsController < ApplicationController
|
|||
@access_token = Doorkeeper::AccessToken.create!({ :application_id => @application.id,
|
||||
:resource_owner_id => @bot.uid,
|
||||
:scopes => "public write",
|
||||
:expires_in => "604800",
|
||||
:expires_in => "2592000",
|
||||
:use_refresh_token => true
|
||||
})
|
||||
@install_bot.update_attributes!(state: 1)
|
||||
render_ok(token: @access_token.token)
|
||||
end
|
||||
|
||||
|
|
|
@ -195,7 +195,7 @@ class PullRequestsController < ApplicationController
|
|||
@issue_user = @issue.user
|
||||
@issue_assign_to = @issue.get_assign_user
|
||||
@gitea_pull = Gitea::PullRequest::GetService.call(@owner.login,
|
||||
@repository.identifier, @pull_request.gitea_number, current_user&.gitea_token)
|
||||
@repository.identifier, @pull_request.gitea_number, @owner&.gitea_token)
|
||||
@last_review = @pull_request.reviews.take
|
||||
end
|
||||
|
||||
|
@ -281,12 +281,12 @@ class PullRequestsController < ApplicationController
|
|||
|
||||
|
||||
def files
|
||||
@files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token)
|
||||
@files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, @owner&.gitea_token)
|
||||
# render json: @files_result
|
||||
end
|
||||
|
||||
def commits
|
||||
@commits_result = Gitea::PullRequest::CommitsService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token)
|
||||
@commits_result = Gitea::PullRequest::CommitsService.call(@owner.login, @project.identifier, @pull_request.gitea_number, @owner&.gitea_token)
|
||||
# render json: @commits_result
|
||||
end
|
||||
|
||||
|
|
|
@ -122,10 +122,10 @@ class RepositoriesController < ApplicationController
|
|||
if params[:filepath].present?
|
||||
file_path_uri = URI.parse(URI.encode(params[:filepath].to_s.strip))
|
||||
@hash_commit = Gitea::Repository::Commits::FileListService.new(@owner.login, @project.identifier, file_path_uri,
|
||||
sha: params[:sha], page: params[:page], limit: params[:limit], token: current_user&.gitea_token).call
|
||||
sha: params[:sha], page: params[:page], limit: params[:limit], token: @owner&.gitea_token).call
|
||||
else
|
||||
@hash_commit = Gitea::Repository::Commits::ListService.new(@owner.login, @project.identifier,
|
||||
sha: params[:sha], page: params[:page], limit: params[:limit], token: current_user&.gitea_token).call
|
||||
sha: params[:sha], page: params[:page], limit: params[:limit], token: @owner&.gitea_token).call
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -140,8 +140,8 @@ class RepositoriesController < ApplicationController
|
|||
if @project.educoder?
|
||||
return render_error('暂未开放,敬请期待.')
|
||||
else
|
||||
@commit = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, current_user&.gitea_token)
|
||||
@commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, current_user&.gitea_token, {diff: true})
|
||||
@commit = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token)
|
||||
@commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token, {diff: true})
|
||||
render_error(@commit[:message], @commit[:status]) if @commit.has_key?(:status) || @commit_diff.has_key?(:status)
|
||||
end
|
||||
end
|
||||
|
@ -156,7 +156,7 @@ class RepositoriesController < ApplicationController
|
|||
|
||||
@tag_names = result.is_a?(Hash) && result.key?(:status) ? [] : name_result
|
||||
|
||||
result = Gitea::Repository::Tags::ListService.call(current_user&.gitea_token, @owner.login, @project.identifier, {page: params[:page], limit: params[:limit]})
|
||||
result = Gitea::Repository::Tags::ListService.call(@owner&.gitea_token, @owner.login, @project.identifier, {page: params[:page], limit: params[:limit]})
|
||||
|
||||
@tags = result.is_a?(Hash) && result.key?(:status) ? [] : result
|
||||
end
|
||||
|
@ -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 = []
|
||||
|
@ -261,7 +262,7 @@ class RepositoriesController < ApplicationController
|
|||
archive_url = "/repos/#{@owner.login}/#{@repository.identifier}/archive/#{Addressable::URI.escape(params[:archive])}"
|
||||
|
||||
file_path = [domain, api_url, archive_url].join
|
||||
file_path = [file_path, "access_token=#{current_user&.gitea_token}"].join("?") if @repository.hidden?
|
||||
file_path = [file_path, "access_token=#{@owner&.gitea_token}"].join("?")
|
||||
|
||||
return render_not_found if !request.format.zip? && !request.format.gzip?
|
||||
|
||||
|
@ -274,7 +275,7 @@ class RepositoriesController < ApplicationController
|
|||
|
||||
url = "/repos/#{@owner.login}/#{@repository.identifier}/raw/#{Addressable::URI.escape(params[:filepath])}?ref=#{Addressable::URI.escape(params[:ref])}"
|
||||
file_path = [domain, api_url, url].join
|
||||
file_path = [file_path, "access_token=#{current_user&.gitea_token}"].join("&")
|
||||
file_path = [file_path, "access_token=#{@owner&.gitea_token}"].join("&")
|
||||
|
||||
redirect_to file_path
|
||||
end
|
||||
|
@ -302,16 +303,16 @@ class RepositoriesController < ApplicationController
|
|||
if params[:filepath].present?
|
||||
file_path_uri = URI.parse(URI.encode(params[:filepath].to_s.strip))
|
||||
Gitea::Repository::Commits::FileListService.new(@project.owner.login, @project.identifier, file_path_uri,
|
||||
sha: get_ref, page: 1, limit: 1, token: current_user&.gitea_token).call
|
||||
sha: get_ref, page: 1, limit: 1, token: @project&.owner&.gitea_token).call
|
||||
else
|
||||
Gitea::Repository::Commits::ListService.new(@project.owner.login, @project.identifier,
|
||||
sha: get_ref, page: 1, limit: 1, token: current_user&.gitea_token).call
|
||||
sha: get_ref, page: 1, limit: 1, token: @project&.owner&.gitea_token).call
|
||||
end
|
||||
end
|
||||
|
||||
def get_statistics
|
||||
@branches_count = @project.educoder? ? 0 : Gitea::Repository::Branches::ListService.new(@project.owner, @project.identifier).call&.size
|
||||
@tags_count = @project.educoder? ? 0 : Gitea::Repository::Tags::ListService.new(current_user&.gitea_token, @project.owner.login, @project.identifier).call&.size
|
||||
@tags_count = @project.educoder? ? 0 : Gitea::Repository::Tags::ListService.new(@project&.owner&.gitea_token, @project.owner.login, @project.identifier).call&.size
|
||||
end
|
||||
|
||||
def get_ref
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class Users::HeadmapsController < Users::BaseController
|
||||
def index
|
||||
result = Gitea::User::HeadmapService.call(observed_user.login, start_stamp, end_stamp)
|
||||
result = Gitea::User::HeadmapService.call(observed_user.login, start_stamp, end_stamp, observed_user&.gitea_token)
|
||||
@headmaps = result[2].blank? ? [] : result[2]
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
|
|
|
@ -4,7 +4,7 @@ class Users::StatisticsController < Users::BaseController
|
|||
# 近期活动统计
|
||||
def activity
|
||||
date_range = (1.week.ago.to_date..Date.today).to_a
|
||||
commit_request = Gitea::User::HeadmapService.call(observed_user.login, 1.week.ago.to_date.to_time.to_i, Date.today.to_time.to_i)
|
||||
commit_request = Gitea::User::HeadmapService.call(observed_user.login, 1.week.ago.to_date.to_time.to_i, Date.today.end_of_day.to_time.to_i, observed_user.gitea_token)
|
||||
commit_data = commit_request[2]
|
||||
@date_data = []
|
||||
@issue_data = []
|
||||
|
@ -14,8 +14,11 @@ class Users::StatisticsController < Users::BaseController
|
|||
@date_data << date.strftime("%Y.%m.%d")
|
||||
@issue_data << observed_user.issues.issue_issue.where("DATE(created_on) = ?", date).size
|
||||
@pull_request_data << observed_user.pull_requests.where("DATE(created_at) = ?", date).size
|
||||
date_commit_data = commit_data.blank? ? nil : commit_data.select{|item| item["timestamp"] == date.to_time.to_i}
|
||||
@commit_data << (date_commit_data.blank? ? 0 : date_commit_data[0]["contributions"].to_i)
|
||||
contribution = 0
|
||||
commit_data.each do |item|
|
||||
contribution += item["contributions"] if Time.at(item["timestamp"]).strftime("%Y-%m-%d") == date.to_s
|
||||
end
|
||||
@commit_data << contribution
|
||||
end
|
||||
render :json => {dates: @date_data, issues_count: @issue_data, pull_requests_count: @pull_request_data, commits_count: @commit_data}
|
||||
end
|
||||
|
|
|
@ -163,7 +163,7 @@ class VersionReleasesController < ApplicationController
|
|||
end
|
||||
|
||||
def check_release_authorize
|
||||
return render_forbidden("您没有权限进行此操作.") unless current_user.admin? || @project.manager?(current_user)
|
||||
return render_forbidden("您没有权限进行此操作.") unless current_user.admin? || @project.develper?(current_user)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -190,22 +190,24 @@ module ProjectOperable
|
|||
end
|
||||
|
||||
# 项目管理员(包含项目拥有者),权限:仓库设置、仓库可读可写
|
||||
# 增加bot用户权限,已安装bot,当前bot用户即拥有权限,权限粒度待完善
|
||||
def manager?(user)
|
||||
if owner.is_a?(User)
|
||||
managers.exists?(user_id: user.id)
|
||||
managers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?)
|
||||
elsif owner.is_a?(Organization)
|
||||
managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_only_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0)
|
||||
managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_only_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?)
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
# 项目开发者,可读可写权限
|
||||
# 增加bot用户权限,已安装当前bot用户对应的bot即拥有权限,权限粒度待完善
|
||||
def develper?(user)
|
||||
if owner.is_a?(User)
|
||||
developers.exists?(user_id: user.id)
|
||||
developers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?)
|
||||
elsif owner.is_a?(Organization)
|
||||
developers.exists?(user_id: user.id) || (owner.is_only_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0)
|
||||
developers.exists?(user_id: user.id) || (owner.is_only_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?)
|
||||
else
|
||||
false
|
||||
end
|
||||
|
|
|
@ -31,6 +31,26 @@ module Watchable
|
|||
following.size
|
||||
end
|
||||
|
||||
def simple_contribution_perc(project, perc=nil)
|
||||
@project = project
|
||||
@user = self
|
||||
|
||||
def cal_perc(count_user, count_all)
|
||||
(count_user * 1.0 / (count_all + 0.000000001)).round(5)
|
||||
end
|
||||
|
||||
if Site.has_blockchain? && (@project['use_blockchain'] == true or @project['use_blockchain'] == 1) && @user.id.present?
|
||||
balance_user = Blockchain::BalanceQueryOneProject.call({"user_id": @user.id, "project_id": @project.id})
|
||||
balance_all = Blockchain::RepoBasicInfo.call({"project_id": @project.id})["cur_supply"]
|
||||
score = cal_perc(balance_user, balance_all)
|
||||
score = (score * 100).round(1).to_s + "%"
|
||||
else
|
||||
score = perc
|
||||
end
|
||||
|
||||
score
|
||||
end
|
||||
|
||||
def contribution_perc(project)
|
||||
@project = project
|
||||
@user = self
|
||||
|
|
|
@ -449,6 +449,19 @@ class User < Owner
|
|||
self.status = STATUS_EDIT_INFO
|
||||
end
|
||||
|
||||
def fresh_gitea_token
|
||||
result = $gitea_client.get_users_tokens_by_username(self.login, {query: {sudo: self.login}})
|
||||
if result[:data].present?
|
||||
result[:data].map{ |e|
|
||||
$gitea_client.delete_users_tokens_by_username_token(self.login, e["name"], {query: {sudo: self.login} })
|
||||
}
|
||||
end
|
||||
new_result = $gitea_client.post_users_tokens_by_username(self.login, { query: {sudo: self.login}, body:{ name: self.login} })
|
||||
if new_result["sha1"].present?
|
||||
update(gitea_token: new_result["sha1"])
|
||||
end
|
||||
end
|
||||
|
||||
def activate!
|
||||
update_attribute(:status, STATUS_ACTIVE)
|
||||
prohibit_gitea_user_login!(false)
|
||||
|
@ -845,6 +858,15 @@ class User < Owner
|
|||
end
|
||||
end
|
||||
|
||||
# 重写gitea_token,当用户为bot类型时,替换成管理员token
|
||||
def gitea_token
|
||||
if self.platform == "bot"
|
||||
GiteaService.gitea_config[:admin_token]
|
||||
else
|
||||
self['gitea_token']
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
def validate_password_length
|
||||
# 管理员的初始密码是5位
|
||||
|
|
|
@ -32,7 +32,7 @@ class Api::V1::Projects::BlameService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_blame_by_owner_repo(owner, repo, {query: request_params})
|
||||
@gitea_data = $gitea_hat_client.get_repos_blame_by_owner_repo(owner, repo, {query: request_params})
|
||||
raise Error, '获取项目blame失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
end
|
|
@ -24,7 +24,7 @@ class Api::V1::Projects::Branches::AllListService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '获取所有分支失败!' unless @gitea_data.is_a?(Hash)
|
||||
@gitea_data = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '获取所有分支失败!' unless @gitea_data.is_a?(Array)
|
||||
end
|
||||
end
|
|
@ -44,9 +44,9 @@ class Api::V1::Projects::Branches::CreateService < ApplicationService
|
|||
end
|
||||
|
||||
def check_branch_exist
|
||||
result = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Hash)
|
||||
raise Error, '旧分支不存在!' if !result['branch_name'].include?(@old_branch_name)
|
||||
raise Error, '新分支已存在!' if result['branch_name'].include?(@new_branch_name)
|
||||
result = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Array)
|
||||
raise Error, '旧分支不存在!' if !result.include?(@old_branch_name)
|
||||
raise Error, '新分支已存在!' if result.include?(@new_branch_name)
|
||||
end
|
||||
end
|
|
@ -40,8 +40,8 @@ class Api::V1::Projects::Branches::DeleteService < ApplicationService
|
|||
end
|
||||
|
||||
def check_branch_exist
|
||||
result = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Hash)
|
||||
raise Error, '分支不存在!' if !result['branch_name'].include?(@branch_name)
|
||||
result = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Array)
|
||||
raise Error, '分支不存在!' if !result.include?(@branch_name)
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
class Api::V1::Projects::Branches::ListService < ApplicationService
|
||||
|
||||
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)
|
||||
@project = project
|
||||
|
@ -15,8 +15,11 @@ class Api::V1::Projects::Branches::ListService < ApplicationService
|
|||
|
||||
def call
|
||||
load_gitea_data
|
||||
|
||||
gitea_data
|
||||
load_default_branch
|
||||
|
||||
@gitea_data[:default_branch] = @gitea_repo_data["default_branch"]
|
||||
|
||||
@gitea_data
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -32,9 +35,12 @@ class Api::V1::Projects::Branches::ListService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
puts request_params
|
||||
@gitea_data = $gitea_client.get_repos_branches_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
puts @gitea_data
|
||||
@gitea_data = $gitea_hat_client.get_repos_branches_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '获取分支列表失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
|
||||
def load_default_branch
|
||||
@gitea_repo_data = $gitea_client.get_repos_by_owner_repo(owner, repo) rescue nil
|
||||
raise Error, '获取仓库信息失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
end
|
|
@ -48,8 +48,8 @@ class Api::V1::Projects::Branches::UpdateDefaultBranchService < ApplicationServi
|
|||
end
|
||||
|
||||
def check_branch_exist
|
||||
result = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Hash)
|
||||
raise Error, '新默认分支不存在!' if !result['branch_name'].include?(@new_default_branch)
|
||||
result = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Array)
|
||||
raise Error, '新默认分支不存在!' if !result.include?(@new_default_branch)
|
||||
end
|
||||
end
|
|
@ -28,7 +28,7 @@ class Api::V1::Projects::CodeStats::ListService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_code_stats_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
@gitea_data = $gitea_hat_client.get_repos_code_stats_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '获取贡献者贡献度失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
end
|
|
@ -29,7 +29,7 @@ class Api::V1::Projects::Commits::DiffService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_commits_diff_by_owner_repo_sha(owner, repo, sha, {query: request_params}) rescue nil
|
||||
@gitea_data = $gitea_hat_client.get_repos_commits_diff_by_owner_repo_sha(owner, repo, sha, {query: request_params}) rescue nil
|
||||
raise Error, '获取提交对比失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
|
||||
|
|
|
@ -78,15 +78,15 @@ class Api::V1::Projects::Contents::BatchCreateService < ApplicationService
|
|||
|
||||
def excute_data_to_gitea
|
||||
puts request_body.to_json
|
||||
@gitea_data = $gitea_client.post_repos_contents_batch_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil
|
||||
@gitea_data = $gitea_hat_client.post_repos_contents_batch_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil
|
||||
raise Error, '提交文件失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
|
||||
def check_branch_exist
|
||||
result = $gitea_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params} ) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Hash)
|
||||
raise Error, '分支不存在!' unless result['branch_name'].include?(branch)
|
||||
raise Error, '分支已存在!' if result['branch_name'].include?(new_branch) && !new_branch.nil?
|
||||
result = $gitea_hat_client.get_repos_branch_name_set_by_owner_repo(owner, repo, {query: request_params} ) rescue nil
|
||||
raise Error, '查询分支名称失败!' unless result.is_a?(Array)
|
||||
raise Error, '分支不存在!' unless result.include?(branch)
|
||||
raise Error, '分支已存在!' if result.include?(new_branch) && !new_branch.nil?
|
||||
end
|
||||
|
||||
end
|
|
@ -45,6 +45,6 @@ class Api::V1::Projects::GetService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_branch_tag_count
|
||||
@gitea_branch_tag_count = $gitea_client.get_repos_branch_tag_count_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
@gitea_branch_tag_count = $gitea_hat_client.get_repos_branch_tag_count_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
end
|
||||
end
|
|
@ -26,7 +26,7 @@ class Api::V1::Projects::Pulls::GetService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_pulls_by_owner_repo_index(owner, repo, index, {query: request_params})
|
||||
@gitea_data = $gitea_hat_client.get_repos_pulls_by_owner_repo_index(owner, repo, index, {query: request_params})
|
||||
# raise Error, '获取合并请求失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
end
|
|
@ -30,7 +30,7 @@ class Api::V1::Projects::Pulls::Versions::GetDiffService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_pulls_versions_diff_by_owner_repo_index_version_id(owner, repo, index, version_id, {query: request_params})
|
||||
@gitea_data = $gitea_hat_client.get_repos_pulls_versions_diff_by_owner_repo_index_id(owner, repo, index, version_id, {query: request_params})
|
||||
raise Error, '获取合并请求版本diff失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
end
|
|
@ -30,7 +30,7 @@ class Api::V1::Projects::Pulls::Versions::ListService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_pulls_versions_by_owner_repo_index(owner, repo, index, {query: request_params})
|
||||
@gitea_data = $gitea_hat_client.get_repos_pulls_versions_by_owner_repo_index(owner, repo, index, {query: request_params})
|
||||
raise Error, '获取合并请求版本失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
end
|
|
@ -40,7 +40,7 @@ class Api::V1::Projects::Tags::DeleteService < ApplicationService
|
|||
end
|
||||
|
||||
def check_tag_exist
|
||||
result = $gitea_client.get_repos_tag_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
result = $gitea_hat_client.get_repos_tag_name_set_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '查询标签名称失败!' unless result.is_a?(Array)
|
||||
raise Error, '标签不存在!' if !result.include?(@tag_name)
|
||||
end
|
||||
|
|
|
@ -30,7 +30,7 @@ class Api::V1::Projects::Tags::ListService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_tags_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
@gitea_data = $gitea_hat_client.get_repos_tags_by_owner_repo(owner, repo, {query: request_params}) rescue nil
|
||||
raise Error, '获取标签列表失败!' unless @gitea_data.is_a?(Hash)
|
||||
end
|
||||
end
|
|
@ -8,7 +8,7 @@ class Api::V1::Projects::Webhooks::CreateService < ApplicationService
|
|||
validates :active, inclusion: {in: [true, false]}
|
||||
validates :http_method, inclusion: { in: %w(POST GET), message: "请输入正确的请求方式"}
|
||||
validates :content_type, inclusion: { in: %w(json form), message: "请输入正确的Content Type"}
|
||||
validates :type, inclusion: {in: %w(gitea slack discord dingtalk telegram msteams feishu matrix jianmu), message: "请输入正确的Webhook Type"}
|
||||
validates :type, inclusion: {in: %w(gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot), message: "请输入正确的Webhook Type"}
|
||||
def initialize(project, params, token=nil)
|
||||
@project = project
|
||||
@owner = project&.owner.login
|
||||
|
@ -58,6 +58,6 @@ class Api::V1::Projects::Webhooks::CreateService < ApplicationService
|
|||
end
|
||||
|
||||
def excute_data_to_gitea
|
||||
@gitea_data = $gitea_client.post_repos_hooks_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil
|
||||
@gitea_data = $gitea_hat_client.post_repos_hooks_by_owner_repo(owner, repo, {body: request_body.to_json, query: request_params}) rescue nil
|
||||
end
|
||||
end
|
|
@ -30,6 +30,6 @@ class Api::V1::Projects::Webhooks::ListService < ApplicationService
|
|||
end
|
||||
|
||||
def load_gitea_data
|
||||
@gitea_data = $gitea_client.get_repos_hooks_hooktasks_by_owner_repo(owner, repo, id, {query: request_params}) rescue nil
|
||||
@gitea_data = $gitea_hat_client.get_repos_hooks_hooktasks_by_owner_repo(owner, repo, id, {query: request_params}) rescue nil
|
||||
end
|
||||
end
|
|
@ -58,6 +58,6 @@ class Api::V1::Projects::Webhooks::UpdateService < ApplicationService
|
|||
end
|
||||
|
||||
def excute_data_to_gitea
|
||||
@gitea_data = $gitea_client.patch_repos_hooks_by_owner_repo_id(owner, repo, id, {body: request_body.to_json, query: request_params}) rescue nil
|
||||
@gitea_data = $gitea_hat_client.patch_repos_hooks_by_owner_repo_id(owner, repo, id, {body: request_body.to_json, query: request_params}) rescue nil
|
||||
end
|
||||
end
|
|
@ -18,19 +18,19 @@ class Gitea::ClientService < ApplicationService
|
|||
# token: {},
|
||||
# data: {}
|
||||
# }
|
||||
def post(url, params={})
|
||||
def post(url, params={}, is_hat=false)
|
||||
puts "[gitea] request params: #{params}"
|
||||
auth_token = authen_params(params[:token])
|
||||
conn(auth_token).post do |req|
|
||||
req.url full_url(url)
|
||||
req.url full_url(url, "post", is_hat)
|
||||
req.body = params[:data].to_json
|
||||
end
|
||||
end
|
||||
|
||||
def get(url, params={})
|
||||
def get(url, params={}, is_hat = false)
|
||||
auth_token = authen_params(params[:token])
|
||||
conn(auth_token).get do |req|
|
||||
req.url full_url(url, 'get')
|
||||
req.url full_url(url, 'get', is_hat)
|
||||
params.except(:token).each_pair do |key, value|
|
||||
req.params["#{key}"] = value
|
||||
end
|
||||
|
@ -41,27 +41,27 @@ class Gitea::ClientService < ApplicationService
|
|||
# end #=> 响应头
|
||||
end
|
||||
|
||||
def delete(url, params={})
|
||||
def delete(url, params={}, is_hat = false)
|
||||
auth_token = authen_params(params[:token])
|
||||
conn(auth_token).delete do |req|
|
||||
req.url full_url(url)
|
||||
req.url full_url(url, "delete", is_hat)
|
||||
req.body = params[:data].to_json
|
||||
end
|
||||
end
|
||||
|
||||
def patch(url, params={})
|
||||
def patch(url, params={}, is_hat=false)
|
||||
puts "[gitea] request params: #{params}"
|
||||
auth_token = authen_params(params[:token])
|
||||
conn(auth_token).patch do |req|
|
||||
req.url full_url(url)
|
||||
req.url full_url(url, 'patch', is_hat)
|
||||
req.body = params[:data].to_json
|
||||
end
|
||||
end
|
||||
|
||||
def put(url, params={})
|
||||
def put(url, params={}, is_hat=false)
|
||||
puts "[gitea] put request params: #{params}"
|
||||
conn(authen_params(params[:token])).put do |req|
|
||||
req.url full_url(url)
|
||||
req.url full_url(url, "put", is_hat)
|
||||
req.body = params[:data].to_json
|
||||
end
|
||||
end
|
||||
|
@ -99,16 +99,20 @@ class Gitea::ClientService < ApplicationService
|
|||
GiteaService.gitea_config[:base_url]
|
||||
end
|
||||
|
||||
def hat_base_url
|
||||
GiteaService.gitea_config[:hat_base_url]
|
||||
end
|
||||
|
||||
def domain
|
||||
GiteaService.gitea_config[:domain]
|
||||
end
|
||||
|
||||
def api_url
|
||||
[domain, base_url].join('')
|
||||
def api_url(is_hat=false)
|
||||
is_hat ? [domain, hat_base_url].join('') : [domain, base_url].join('')
|
||||
end
|
||||
|
||||
def full_url(api_rest, action='post')
|
||||
url = [api_url, api_rest].join('').freeze
|
||||
def full_url(api_rest, action='post', is_hat=false)
|
||||
url = [api_url(is_hat), api_rest].join('').freeze
|
||||
url = action === 'get' ? url : URI.escape(url)
|
||||
url = URI.escape(url) unless url.ascii_only?
|
||||
puts "[gitea] request url: #{url}"
|
||||
|
|
|
@ -24,7 +24,7 @@ class Gitea::Hooks::CreateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = post(url, params)
|
||||
response = post(url, params, true)
|
||||
render_201_response(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ class Gitea::Organization::CreateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = post(url, request_params)
|
||||
response = post(url, request_params, true)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ class Gitea::Organization::UpdateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = patch(url, request_params)
|
||||
response = patch(url, request_params, true)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ class Gitea::PullRequest::CommitsService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class Gitea::PullRequest::FilesService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params.merge(token: token))
|
||||
response = get(url, params.merge(token: token), true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ class Gitea::PullRequest::GetService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class Gitea::PullRequest::UpdateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = patch(url, request_params)
|
||||
response = patch(url, request_params, true)
|
||||
|
||||
status, message, body = render_response(response)
|
||||
json_format(status, message, body)
|
||||
|
|
|
@ -8,7 +8,7 @@ class Gitea::Repository::Branches::ListNameService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_200_response(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ class Gitea::Repository::Branches::ListSliceService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_200_response(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ class Gitea::Repository::Commits::CompareService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ class Gitea::Repository::Commits::FileListService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ class Gitea::Repository::Commits::GetService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ class Gitea::Repository::Commits::ListSliceService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -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, params={})
|
||||
@owner = owner
|
||||
@repo_name = repo_name
|
||||
@page = params[:page] || 1
|
||||
@limit = params[:limit] || 20
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
render_status(response)
|
||||
response = get(url, params, true)
|
||||
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
|
|
@ -13,7 +13,7 @@ class Gitea::Repository::Entries::GetService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ class Gitea::Repository::Entries::ListService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ class Gitea::Repository::Files::GetService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ module Gitea
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ class Gitea::Repository::Readme::DirService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
status, message, body = render_response(response)
|
||||
json_format(status, message, body)
|
||||
end
|
||||
|
|
|
@ -15,7 +15,7 @@ class Gitea::Repository::Readme::GetService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
status, message, body = render_response(response)
|
||||
json_format(status, message, body)
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@ class Gitea::Repository::Tags::ListNameService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_200_response(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ class Gitea::Repository::Tags::ListService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, request_params)
|
||||
response = get(url, request_params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ class Gitea::Repository::TransferService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = post(url, request_params)
|
||||
response = post(url, request_params, true)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ class Gitea::Repository::Webhooks::CreateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = post(url, request_params)
|
||||
response = post(url, request_params, true)
|
||||
render_response(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ class Gitea::Repository::Webhooks::TasksService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_response(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ class Gitea::Repository::Webhooks::UpdateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = patch(url, data_params)
|
||||
response = patch(url, data_params, true)
|
||||
render_response(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
class Gitea::User::HeadmapService < Gitea::ClientService
|
||||
attr_reader :start_time, :end_time, :username
|
||||
attr_reader :start_time, :end_time, :username, :token
|
||||
|
||||
def initialize(username, start_time, end_time)
|
||||
def initialize(username, start_time, end_time, token=nil)
|
||||
@username = username
|
||||
@start_time = start_time
|
||||
@end_time = end_time
|
||||
@token = token
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_response(response)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(start: start_time, end: end_time)
|
||||
Hash.new.merge(start: start_time, end: end_time, token: token)
|
||||
end
|
||||
|
||||
def url
|
||||
|
|
|
@ -24,7 +24,7 @@ class Gitea::User::UpdateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
patch(url, data_params)
|
||||
patch(url, data_params, true)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -18,7 +18,7 @@ class Gitea::Versions::CreateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = post(url, request_params)
|
||||
response = post(url, request_params, true)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ class Gitea::Versions::GetService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ class Gitea::Versions::ListService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
response = get(url, params, true)
|
||||
render_result(response)
|
||||
end
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ class Gitea::Versions::UpdateService < Gitea::ClientService
|
|||
end
|
||||
|
||||
def call
|
||||
patch(url, request_params)
|
||||
patch(url, request_params, true)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -51,7 +51,7 @@ class Projects::TransferService < ApplicationService
|
|||
|
||||
def gitea_update_owner
|
||||
begin
|
||||
@gitea_repo = $gitea_client.post_repos_transfer_by_owner_repo(owner&.login, project.identifier, {body: {new_owner: new_owner&.login}.to_json})
|
||||
@gitea_repo = $gitea_hat_client.post_repos_transfer_by_owner_repo(owner&.login, project.identifier, {body: {new_owner: new_owner&.login}.to_json})
|
||||
# @gitea_repo = Gitea::Repository::TransferService.call(owner&.gitea_token, owner&.login, project.identifier, new_owner&.login)
|
||||
rescue Exception => e
|
||||
Rails.logger.info("##### Project transfer_service, gitea transfer error #{e}")
|
||||
|
|
|
@ -63,19 +63,6 @@
|
|||
<%= f.input :gender, as: :radio_buttons, label: '性别', collection: [%w(男 0), %w(女 1)], wrapper_html: { class: 'col-md-3' } %>
|
||||
</div>
|
||||
|
||||
<div class="form-row user-identity-select">
|
||||
<div class="form-group select optional col-md-1">
|
||||
<%= f.label :identity, label: '职业' %>
|
||||
<%= select_tag('user[identity]', [], class: 'form-control identity-select optional', 'data-value': @user.user_extension&.identity, 'data-first-title': '请选择') %>
|
||||
</div>
|
||||
<div class="form-group technical-title-select-wrapper optional col-md-1" style="<%= @user&.user_extension&.student? ? 'display:none;' : '' %>">
|
||||
<%= f.label :technical_title, label: '职称' %>
|
||||
<%= select_tag('user[technical_title]', [], class: 'form-control technical-title-select optional', 'data-value': @user.technical_title) %>
|
||||
</div>
|
||||
|
||||
<%= f.input :student_id, as: :tel, label: '学号', wrapper_html: { class: 'col-md-2', style: @user&.user_extension&.student? ? '' : 'display:none;' }, input_html: { class: 'student-id-input' } %>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<%= f.input :mail, as: :email, label: '邮箱地址', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11' } %>
|
||||
<%= f.input :phone, as: :tel, label: '手机号', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11', autocomplete: 'off' } %>
|
||||
|
@ -102,19 +89,10 @@
|
|||
<%= f.label :role, label: '角色' %>
|
||||
<div class="d-flex">
|
||||
<%= f.input :admin, as: :boolean, label: '管理员', checked_value: 1, unchecked_value: 0 %>
|
||||
<%= f.input :business, as: :boolean, label: '运营人员', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %>
|
||||
<%= f.input :is_test, as: :boolean, label: '测试账号', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="form-group check_boxes optional">
|
||||
<%= f.label :role, label: '认证信息' %>
|
||||
<div class="d-flex">
|
||||
<%= f.input :professional_certification, as: :boolean, label: '职业认证', checked_value: 1, unchecked_value: 0 %>
|
||||
<%= f.input :authentication, as: :boolean, label: '实名认证', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<%= f.input :password, as: :password, label: '修改密码', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11', autocomplete: 'new-password' } %>
|
||||
|
|
|
@ -10,11 +10,7 @@
|
|||
<%= select_tag(:status, options_for_select(status_options), class: 'form-control') %>
|
||||
</div>
|
||||
|
||||
<div class="form-group mr-2">
|
||||
<label for="identity">职业:</label>
|
||||
<% identity_options = [['全部', ''], ['教师', 0], ['学生', 1], ['专业人士', 2]] %>
|
||||
<%= select_tag(:identity, options_for_select(identity_options), class: 'form-control') %>
|
||||
</div>
|
||||
|
||||
<div class="form-group mr-2">
|
||||
<label for="identity">类型:</label>
|
||||
<% open_user_type_options = [['所有用户', ''], ['头歌同步', "OpenUsers::Educoder"], ['平台注册', "Forge"],] %>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<th width="8%" class="text-left">昵称</th>
|
||||
<th width="13%">邮件地址</th>
|
||||
<th width="10%">手机号码</th>
|
||||
<th width="7%">角色</th>
|
||||
<th width="10%"><%= sort_tag('创建于', name: 'created_on', path: admins_users_path) %></th>
|
||||
<th width="10%"><%= sort_tag('最后登录', name: 'last_login_on', path: admins_users_path) %></th>
|
||||
<th width="12%">项目数</th>
|
||||
|
@ -24,7 +23,6 @@
|
|||
</td>
|
||||
<td><%= overflow_hidden_span display_text(user.mail), width: 150 %></td>
|
||||
<td><%= overflow_hidden_span display_text(user.phone), width: 100 %></td>
|
||||
<td><%= user.identity %></td>
|
||||
<td><%= display_text(user.created_on&.strftime('%Y-%m-%d %H:%M')) %></td>
|
||||
<td><%= display_text(user.last_login_on&.strftime('%Y-%m-%d %H:%M')) %></td>
|
||||
<td><%= link_to user.projects_count, "/#{user.login}/projects", target: "_blank" %></td>
|
||||
|
@ -44,9 +42,8 @@
|
|||
<div class="d-inline">
|
||||
<%= javascript_void_link('更多', class: 'action dropdown-toggle', 'data-toggle': 'dropdown', 'aria-haspopup': true, 'aria-expanded': false) %>
|
||||
<div class="dropdown-menu more-action-dropdown">
|
||||
|
||||
<%= javascript_void_link '恢复禁密账号', class: 'dropdown-item reset-login-times-action', data: { id: user.id } %>
|
||||
|
||||
<%= javascript_void_link '重置Gitea Token', class: 'dropdown-item fresh-gitea-token-action', data: { id: user.id } %>
|
||||
<%= delete_link '删除', admins_user_path(user, element: ".user-item-#{user.id}"), class: 'dropdown-item delete-user-action' %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -17,10 +17,10 @@ end
|
|||
json.protected branch['protected']
|
||||
json.user_can_push branch['user_can_push']
|
||||
json.user_can_merge branch['user_can_merge']
|
||||
json.commit_id branch['commit_id']
|
||||
json.commit_id branch['commit']['id']
|
||||
json.commit_time_from_now time_from_now(branch['commit']['timestamp'].to_time)
|
||||
json.commit_time branch['commit_time']
|
||||
json.default_branch branch['default_branch']
|
||||
json.commit_time branch['commit']['timestamp']
|
||||
json.default_branch default_branch || nil
|
||||
json.http_url render_http_url(@project)
|
||||
json.zip_url render_zip_url(@owner, @project.repository, branch['name'])
|
||||
json.tar_url render_tar_url(@owner, @project.repository, branch['name'])
|
|
@ -1,3 +1,3 @@
|
|||
json.array! @result_object["branch_name"] do |branch|
|
||||
json.array! @result_object do |branch|
|
||||
json.partial! "api/v1/projects/branches/simple_detail", branch: branch
|
||||
end
|
|
@ -1 +1 @@
|
|||
json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: @result_object
|
||||
json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: @result_object, default_branch: @result_object[:default_branch]
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
json.total_count @result_object[:total_data].to_i
|
||||
json.branches @result_object[:data].each do |branch|
|
||||
json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: branch
|
||||
json.partial! "api/v1/projects/branches/simple_gitea_detail", branch: branch, default_branch: @result_object[:default_branch]
|
||||
|
||||
end
|
|
@ -12,10 +12,10 @@ if tag.present? && tag.is_a?(Hash)
|
|||
json.commit do
|
||||
json.sha tag['commit']['sha']
|
||||
json.message tag['commit']['message']
|
||||
json.time_ago time_from_now(tag['commit']['commiter']['date'].to_time)
|
||||
json.created_at_unix tag['commit']['commiter']['date'].to_time.to_i
|
||||
json.time_ago time_from_now(tag['commit']['committer']['date'].to_time)
|
||||
json.created_at_unix tag['commit']['committer']['date'].to_time.to_i
|
||||
json.committer do
|
||||
json.partial! 'api/v1/users/commit_user', user: render_cache_commit_author(tag['commit']['commiter']), name: tag['commit']['commiter']['name']
|
||||
json.partial! 'api/v1/users/commit_user', user: render_cache_commit_author(tag['commit']['committer']), name: tag['commit']['committer']['name']
|
||||
end
|
||||
json.author do
|
||||
json.partial! 'api/v1/users/commit_user', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name']
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
json.partial! "commons/success"
|
||||
if @bot.present?
|
||||
json.extract! @bot, :id, :bot_name, :bot_des, :webhook, :is_public, :logo, :state, :web_url, :install_num, :owner_id, :create_time, :update_time
|
||||
end
|
||||
|
|
@ -4,5 +4,8 @@ json.data do
|
|||
json.array! @install_bots do |install_bot|
|
||||
json.installation_id install_bot.id
|
||||
json.extract! install_bot.bot, :id, :name
|
||||
json.bot_id install_bot.bot.id
|
||||
json.bot_name install_bot.bot.name
|
||||
|
||||
end
|
||||
end
|
|
@ -0,0 +1,17 @@
|
|||
json.status 0
|
||||
json.message "success"
|
||||
json.total_count @install_bots.size
|
||||
json.repositories do
|
||||
json.array! @install_bots do |install_bot|
|
||||
project = Project.find_by(id: install_bot.store_id)
|
||||
if project.present?
|
||||
json.id install_bot.store_id
|
||||
json.url "#{base_url}/#{project.owner.login}/#{project.identifier}.git"
|
||||
json.identifier project.identifier
|
||||
json.name project.name
|
||||
json.description Nokogiri::HTML(project.description).text
|
||||
json.owner_name project.owner.login
|
||||
json.is_public project.is_public
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
json.partial! "commons/success"
|
||||
|
||||
json.extract! @install_bot, :id, :bot_id, :installer_id, :state, :create_time, :update_time
|
||||
json.bot_name @install_bot.bot.name
|
||||
|
|
@ -9,6 +9,7 @@ json.user_admin_or_developer @user_admin_or_developer
|
|||
json.project_name @project.name
|
||||
json.project_author @project.owner.try(:login)
|
||||
json.project_author_name @project.owner.try(:show_real_name)
|
||||
json.has_created_pull_requests @project.pull_requests.size > 0
|
||||
|
||||
json.issues do
|
||||
json.array! @issues.to_a do |issue|
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
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?
|
||||
json.contributions contributor["contributions"]
|
||||
# json.gid contributor["id"]
|
||||
json.login contributor["login"]
|
||||
json.contributions contributor["commits"]
|
||||
json.login nil
|
||||
json.type nil
|
||||
json.name contributor["login"]
|
||||
json.image_url User::Avatar.get_letter_avatar_url(contributor["login"])
|
||||
json.name contributor["name"].downcase
|
||||
json.email contributor["email"]
|
||||
json.image_url User::Avatar.get_letter_avatar_url(contributor["name"])
|
||||
json.contribution_perc User.new(login: contributor["name"], mail: contributor["email"]).simple_contribution_perc(project, contributor["contribution_perc"])
|
||||
else
|
||||
json.contributions contributor["contributions"]
|
||||
# json.gid contributor["id"]
|
||||
json.contributions contributor["commits"]
|
||||
json.id user["id"]
|
||||
json.login user["login"]
|
||||
json.email user["email"]
|
||||
json.type user["type"]
|
||||
json.name user["name"]
|
||||
json.name user["name"].downcase
|
||||
json.image_url user["avatar_url"]
|
||||
db_user = User.find_by_id(user["id"])
|
||||
json.contribution_perc db_user.contribution_perc(project) if db_user.present?
|
||||
json.contribution_perc db_user.simple_contribution_perc(project, contributor["contribution_perc"]) if db_user.present?
|
||||
end
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
total_count = @contributors.size
|
||||
total_count = @total_count
|
||||
json.list @contributors.each do |contributor|
|
||||
json.partial! 'contributor', locals: { contributor: contributor, project: @project }
|
||||
end
|
||||
|
|
|
@ -14,10 +14,10 @@ json.tags @tags do |tag|
|
|||
json.commit do
|
||||
json.sha tag['commit']['sha']
|
||||
json.message tag['commit']['message']
|
||||
json.time_ago time_from_now(tag['commit']['commiter']['date'].to_time)
|
||||
json.created_at_unix tag['commit']['commiter']['date'].to_time.to_i
|
||||
json.time_ago time_from_now(tag['commit']['committer']['date'].to_time)
|
||||
json.created_at_unix tag['commit']['committer']['date'].to_time.to_i
|
||||
json.committer do
|
||||
json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['commiter']), name: tag['commit']['commiter']['name']
|
||||
json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['committer']), name: tag['commit']['committer']['name']
|
||||
end
|
||||
json.author do
|
||||
json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name']
|
||||
|
|
|
@ -55,6 +55,8 @@ default: &default
|
|||
access_key_secret: ''
|
||||
domain: 'https://testgit.trustie.net'
|
||||
base_url: '/api/v1'
|
||||
admin_token: '123123'
|
||||
hat_base_url: '/api/hat'
|
||||
accelerator:
|
||||
access_key_id: ''
|
||||
access_key_secret: ''
|
||||
|
|
|
@ -285,7 +285,7 @@ Doorkeeper.configure do
|
|||
# #call can be used in order to allow conditional checks (to allow non-SSL
|
||||
# redirects to localhost for example).
|
||||
#
|
||||
# force_ssl_in_redirect_uri !Rails.env.development?
|
||||
force_ssl_in_redirect_uri false
|
||||
#
|
||||
# force_ssl_in_redirect_uri { |uri| uri.host != 'localhost' }
|
||||
|
||||
|
|
|
@ -7,5 +7,14 @@ $gitea_client = Gitea::Api::Client.new({
|
|||
domain: gitea_config[:domain],
|
||||
base_url: gitea_config[:base_url],
|
||||
username: gitea_config[:access_key_id],
|
||||
password: gitea_config[:access_key_secret]
|
||||
password: gitea_config[:access_key_secret],
|
||||
log_filepath: "log/gitea-client.log"
|
||||
})
|
||||
|
||||
$gitea_hat_client = Gitea::Api::Hat::Client.new({
|
||||
domain: gitea_config[:domain],
|
||||
hat_base_url: gitea_config[:hat_base_url],
|
||||
username: gitea_config[:access_key_id],
|
||||
password: gitea_config[:access_key_secret],
|
||||
log_filepath: "log/gitea-client.log"
|
||||
})
|
|
@ -840,6 +840,7 @@ Rails.application.routes.draw do
|
|||
post :unlock
|
||||
post :active
|
||||
post :reset_login_times
|
||||
post :fresh_gitea_token
|
||||
end
|
||||
end
|
||||
resource :import_disciplines, only: [:create]
|
||||
|
@ -1064,18 +1065,24 @@ Rails.application.routes.draw do
|
|||
resources :commit_logs, :only => [:create]
|
||||
|
||||
scope '/app' do
|
||||
get '/', to: 'installations#app'
|
||||
post ':id/auth_active', to: 'installations#auth_active'
|
||||
post ':id/update_private_key', to: 'installations#update_private_key'
|
||||
post ':id/update_secret', to: 'installations#update_secret'
|
||||
resources :installations do
|
||||
get :repositories, on: :collection
|
||||
post ':id/update_callback_url', to: 'installations#update_callback_url'
|
||||
resources :installations, only: [:index, :show] do
|
||||
member do
|
||||
post :access_tokens
|
||||
put :suspended
|
||||
put :suspended, to: 'installations#suspended'
|
||||
delete :suspended, to: 'installations#unsuspended'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
resources :installations, only: [] do
|
||||
get :repositories, on: :collection
|
||||
end
|
||||
|
||||
root 'main#index'
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue