diff --git a/Gemfile b/Gemfile index 0645fa72c..abe202581 100644 --- a/Gemfile +++ b/Gemfile @@ -140,4 +140,4 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 0.11.6' \ No newline at end of file +gem 'gitea-client', '~> 1.4.1' diff --git a/README.md b/README.md index 1bcd05cce..a1cadd1cc 100644 --- a/README.md +++ b/README.md @@ -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环境 diff --git a/app/assets/javascripts/admins/users/index.js b/app/assets/javascripts/admins/users/index.js index 0ef024bfd..55dabed19 100644 --- a/app/assets/javascripts/admins/users/index.js +++ b/app/assets/javascripts/admins/users/index.js @@ -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'); diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index 07ea8261e..9137e218e 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -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 diff --git a/app/controllers/api/v1/projects/tags_controller.rb b/app/controllers/api/v1/projects/tags_controller.rb index 06c3b1c8e..b87d48429 100644 --- a/app/controllers/api/v1/projects/tags_controller.rb +++ b/app/controllers/api/v1/projects/tags_controller.rb @@ -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] diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index 63427aa45..941dcf35f 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -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 diff --git a/app/controllers/concerns/repository/languages_percentagable.rb b/app/controllers/concerns/repository/languages_percentagable.rb index 83374dad1..dce5c7ffc 100644 --- a/app/controllers/concerns/repository/languages_percentagable.rb +++ b/app/controllers/concerns/repository/languages_percentagable.rb @@ -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 diff --git a/app/controllers/installations_controller.rb b/app/controllers/installations_controller.rb index d299f6710..f7bf4f0d6 100644 --- a/app/controllers/installations_controller.rb +++ b/app/controllers/installations_controller.rb @@ -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 diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 5401c96f0..9fa978b17 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -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 diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index e32b31017..f03215ace 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -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 diff --git a/app/controllers/users/headmaps_controller.rb b/app/controllers/users/headmaps_controller.rb index 7faba1e50..83efd99fb 100644 --- a/app/controllers/users/headmaps_controller.rb +++ b/app/controllers/users/headmaps_controller.rb @@ -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) diff --git a/app/controllers/users/statistics_controller.rb b/app/controllers/users/statistics_controller.rb index 1948af9b3..013191910 100644 --- a/app/controllers/users/statistics_controller.rb +++ b/app/controllers/users/statistics_controller.rb @@ -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 diff --git a/app/controllers/version_releases_controller.rb b/app/controllers/version_releases_controller.rb index dd59098f7..8324b05bb 100644 --- a/app/controllers/version_releases_controller.rb +++ b/app/controllers/version_releases_controller.rb @@ -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 diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index 0bac02ce6..d5d45a468 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -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 diff --git a/app/models/concerns/watchable.rb b/app/models/concerns/watchable.rb index dc2b67f67..6d3d94e66 100644 --- a/app/models/concerns/watchable.rb +++ b/app/models/concerns/watchable.rb @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index 5e21212ab..8801cd58d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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位 diff --git a/app/services/api/v1/projects/blame_service.rb b/app/services/api/v1/projects/blame_service.rb index d419fec14..cdd5739b8 100644 --- a/app/services/api/v1/projects/blame_service.rb +++ b/app/services/api/v1/projects/blame_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/all_list_service.rb b/app/services/api/v1/projects/branches/all_list_service.rb index 182495cdf..9ca4ae7d0 100644 --- a/app/services/api/v1/projects/branches/all_list_service.rb +++ b/app/services/api/v1/projects/branches/all_list_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/create_service.rb b/app/services/api/v1/projects/branches/create_service.rb index eae3779f8..39964e402 100644 --- a/app/services/api/v1/projects/branches/create_service.rb +++ b/app/services/api/v1/projects/branches/create_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/delete_service.rb b/app/services/api/v1/projects/branches/delete_service.rb index 79a6ba0db..28836c797 100644 --- a/app/services/api/v1/projects/branches/delete_service.rb +++ b/app/services/api/v1/projects/branches/delete_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/list_service.rb b/app/services/api/v1/projects/branches/list_service.rb index e5c6fe442..590c4884f 100644 --- a/app/services/api/v1/projects/branches/list_service.rb +++ b/app/services/api/v1/projects/branches/list_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/branches/update_default_branch_service.rb b/app/services/api/v1/projects/branches/update_default_branch_service.rb index 5c220aa5d..c79c33bd2 100644 --- a/app/services/api/v1/projects/branches/update_default_branch_service.rb +++ b/app/services/api/v1/projects/branches/update_default_branch_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/code_stats/list_service.rb b/app/services/api/v1/projects/code_stats/list_service.rb index a5e330e21..0831bc722 100644 --- a/app/services/api/v1/projects/code_stats/list_service.rb +++ b/app/services/api/v1/projects/code_stats/list_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/commits/diff_service.rb b/app/services/api/v1/projects/commits/diff_service.rb index 71dd155a0..3de96fbaa 100644 --- a/app/services/api/v1/projects/commits/diff_service.rb +++ b/app/services/api/v1/projects/commits/diff_service.rb @@ -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 diff --git a/app/services/api/v1/projects/contents/batch_create_service.rb b/app/services/api/v1/projects/contents/batch_create_service.rb index 92bd30a99..6503fd88c 100644 --- a/app/services/api/v1/projects/contents/batch_create_service.rb +++ b/app/services/api/v1/projects/contents/batch_create_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/get_service.rb b/app/services/api/v1/projects/get_service.rb index ebb0d1cfa..480744bfc 100644 --- a/app/services/api/v1/projects/get_service.rb +++ b/app/services/api/v1/projects/get_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/pulls/get_service.rb b/app/services/api/v1/projects/pulls/get_service.rb index 3c1bba99b..f28881ae0 100644 --- a/app/services/api/v1/projects/pulls/get_service.rb +++ b/app/services/api/v1/projects/pulls/get_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/pulls/versions/get_diff_service.rb b/app/services/api/v1/projects/pulls/versions/get_diff_service.rb index 979bc33fb..1f882fd3b 100644 --- a/app/services/api/v1/projects/pulls/versions/get_diff_service.rb +++ b/app/services/api/v1/projects/pulls/versions/get_diff_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/pulls/versions/list_service.rb b/app/services/api/v1/projects/pulls/versions/list_service.rb index ca88ff1f6..e9ae69c32 100644 --- a/app/services/api/v1/projects/pulls/versions/list_service.rb +++ b/app/services/api/v1/projects/pulls/versions/list_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/tags/delete_service.rb b/app/services/api/v1/projects/tags/delete_service.rb index 492898b53..d0d317aa8 100644 --- a/app/services/api/v1/projects/tags/delete_service.rb +++ b/app/services/api/v1/projects/tags/delete_service.rb @@ -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 diff --git a/app/services/api/v1/projects/tags/list_service.rb b/app/services/api/v1/projects/tags/list_service.rb index a7743fe00..9bf4701fc 100644 --- a/app/services/api/v1/projects/tags/list_service.rb +++ b/app/services/api/v1/projects/tags/list_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/webhooks/create_service.rb b/app/services/api/v1/projects/webhooks/create_service.rb index edc8b2263..303f3b39f 100644 --- a/app/services/api/v1/projects/webhooks/create_service.rb +++ b/app/services/api/v1/projects/webhooks/create_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/webhooks/hooktasks_service.rb b/app/services/api/v1/projects/webhooks/hooktasks_service.rb index 6be9c67c8..17ada9089 100644 --- a/app/services/api/v1/projects/webhooks/hooktasks_service.rb +++ b/app/services/api/v1/projects/webhooks/hooktasks_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/api/v1/projects/webhooks/update_service.rb b/app/services/api/v1/projects/webhooks/update_service.rb index a632d6f2d..c98a24ad8 100644 --- a/app/services/api/v1/projects/webhooks/update_service.rb +++ b/app/services/api/v1/projects/webhooks/update_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/gitea/client_service.rb b/app/services/gitea/client_service.rb index e2bd9d491..fae4ae27e 100644 --- a/app/services/gitea/client_service.rb +++ b/app/services/gitea/client_service.rb @@ -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}" diff --git a/app/services/gitea/hooks/create_service.rb b/app/services/gitea/hooks/create_service.rb index 6b65a6860..8b8d7f2c3 100644 --- a/app/services/gitea/hooks/create_service.rb +++ b/app/services/gitea/hooks/create_service.rb @@ -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 diff --git a/app/services/gitea/organization/create_service.rb b/app/services/gitea/organization/create_service.rb index 4da1720cc..6f4c3d4f2 100644 --- a/app/services/gitea/organization/create_service.rb +++ b/app/services/gitea/organization/create_service.rb @@ -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 diff --git a/app/services/gitea/organization/update_service.rb b/app/services/gitea/organization/update_service.rb index 963099ad9..7a0fd1eec 100644 --- a/app/services/gitea/organization/update_service.rb +++ b/app/services/gitea/organization/update_service.rb @@ -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 diff --git a/app/services/gitea/pull_request/commits_service.rb b/app/services/gitea/pull_request/commits_service.rb index dc2877eba..f85edd296 100644 --- a/app/services/gitea/pull_request/commits_service.rb +++ b/app/services/gitea/pull_request/commits_service.rb @@ -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 diff --git a/app/services/gitea/pull_request/files_service.rb b/app/services/gitea/pull_request/files_service.rb index f7a2bd750..a5c2cf0d8 100644 --- a/app/services/gitea/pull_request/files_service.rb +++ b/app/services/gitea/pull_request/files_service.rb @@ -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 diff --git a/app/services/gitea/pull_request/get_service.rb b/app/services/gitea/pull_request/get_service.rb index f9a35fdca..bd1fd8957 100644 --- a/app/services/gitea/pull_request/get_service.rb +++ b/app/services/gitea/pull_request/get_service.rb @@ -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 diff --git a/app/services/gitea/pull_request/update_service.rb b/app/services/gitea/pull_request/update_service.rb index a68981f29..339caa6ce 100644 --- a/app/services/gitea/pull_request/update_service.rb +++ b/app/services/gitea/pull_request/update_service.rb @@ -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) diff --git a/app/services/gitea/repository/branches/list_name_service.rb b/app/services/gitea/repository/branches/list_name_service.rb index c005c8359..84f6d3a4c 100644 --- a/app/services/gitea/repository/branches/list_name_service.rb +++ b/app/services/gitea/repository/branches/list_name_service.rb @@ -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 diff --git a/app/services/gitea/repository/branches/list_slice_service.rb b/app/services/gitea/repository/branches/list_slice_service.rb index 6b643831a..e04a4b6e6 100644 --- a/app/services/gitea/repository/branches/list_slice_service.rb +++ b/app/services/gitea/repository/branches/list_slice_service.rb @@ -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 diff --git a/app/services/gitea/repository/commits/compare_service.rb b/app/services/gitea/repository/commits/compare_service.rb index 502f6ce90..bdfd4ca3d 100644 --- a/app/services/gitea/repository/commits/compare_service.rb +++ b/app/services/gitea/repository/commits/compare_service.rb @@ -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 diff --git a/app/services/gitea/repository/commits/file_list_service.rb b/app/services/gitea/repository/commits/file_list_service.rb index b1606a0f3..77a193475 100644 --- a/app/services/gitea/repository/commits/file_list_service.rb +++ b/app/services/gitea/repository/commits/file_list_service.rb @@ -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 diff --git a/app/services/gitea/repository/commits/get_service.rb b/app/services/gitea/repository/commits/get_service.rb index d497f1e4f..a8fc67235 100644 --- a/app/services/gitea/repository/commits/get_service.rb +++ b/app/services/gitea/repository/commits/get_service.rb @@ -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 diff --git a/app/services/gitea/repository/commits/list_slice_service.rb b/app/services/gitea/repository/commits/list_slice_service.rb index 04f45f55b..d31cf2bcd 100644 --- a/app/services/gitea/repository/commits/list_slice_service.rb +++ b/app/services/gitea/repository/commits/list_slice_service.rb @@ -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 diff --git a/app/services/gitea/repository/contributors/get_service.rb b/app/services/gitea/repository/contributors/get_service.rb index 1ee1c3955..fe9ed2463 100644 --- a/app/services/gitea/repository/contributors/get_service.rb +++ b/app/services/gitea/repository/contributors/get_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/gitea/repository/entries/get_service.rb b/app/services/gitea/repository/entries/get_service.rb index f8ac27543..f8e7b9451 100644 --- a/app/services/gitea/repository/entries/get_service.rb +++ b/app/services/gitea/repository/entries/get_service.rb @@ -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 diff --git a/app/services/gitea/repository/entries/list_service.rb b/app/services/gitea/repository/entries/list_service.rb index dd62a1147..df9fdb1e3 100644 --- a/app/services/gitea/repository/entries/list_service.rb +++ b/app/services/gitea/repository/entries/list_service.rb @@ -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 diff --git a/app/services/gitea/repository/files/get_service.rb b/app/services/gitea/repository/files/get_service.rb index e5b96e7ba..2a1589821 100644 --- a/app/services/gitea/repository/files/get_service.rb +++ b/app/services/gitea/repository/files/get_service.rb @@ -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 diff --git a/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb b/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb index 0b8a52467..f0fd2557b 100644 --- a/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb +++ b/app/services/gitea/repository/get_branch_and_tag_total_num_service.rb @@ -11,7 +11,7 @@ module Gitea end def call - response = get(url, params) + response = get(url, params, true) render_result(response) end diff --git a/app/services/gitea/repository/readme/dir_service.rb b/app/services/gitea/repository/readme/dir_service.rb index 587fb5d55..830cceaa8 100644 --- a/app/services/gitea/repository/readme/dir_service.rb +++ b/app/services/gitea/repository/readme/dir_service.rb @@ -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 diff --git a/app/services/gitea/repository/readme/get_service.rb b/app/services/gitea/repository/readme/get_service.rb index 48e2d4475..5af86b5ae 100644 --- a/app/services/gitea/repository/readme/get_service.rb +++ b/app/services/gitea/repository/readme/get_service.rb @@ -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 diff --git a/app/services/gitea/repository/tags/list_name_service.rb b/app/services/gitea/repository/tags/list_name_service.rb index 0857ca11c..ac81c9d75 100644 --- a/app/services/gitea/repository/tags/list_name_service.rb +++ b/app/services/gitea/repository/tags/list_name_service.rb @@ -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 diff --git a/app/services/gitea/repository/tags/list_service.rb b/app/services/gitea/repository/tags/list_service.rb index 0f8158b3e..958287179 100644 --- a/app/services/gitea/repository/tags/list_service.rb +++ b/app/services/gitea/repository/tags/list_service.rb @@ -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 diff --git a/app/services/gitea/repository/transfer_service.rb b/app/services/gitea/repository/transfer_service.rb index 358ac9421..40cf5d1bf 100644 --- a/app/services/gitea/repository/transfer_service.rb +++ b/app/services/gitea/repository/transfer_service.rb @@ -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 diff --git a/app/services/gitea/repository/webhooks/create_service.rb b/app/services/gitea/repository/webhooks/create_service.rb index 33c9a9b0c..9105b39c5 100644 --- a/app/services/gitea/repository/webhooks/create_service.rb +++ b/app/services/gitea/repository/webhooks/create_service.rb @@ -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 diff --git a/app/services/gitea/repository/webhooks/tasks_service.rb b/app/services/gitea/repository/webhooks/tasks_service.rb index e4c62edb4..be5a59290 100644 --- a/app/services/gitea/repository/webhooks/tasks_service.rb +++ b/app/services/gitea/repository/webhooks/tasks_service.rb @@ -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 diff --git a/app/services/gitea/repository/webhooks/update_service.rb b/app/services/gitea/repository/webhooks/update_service.rb index 6094c6c51..25456a801 100644 --- a/app/services/gitea/repository/webhooks/update_service.rb +++ b/app/services/gitea/repository/webhooks/update_service.rb @@ -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 diff --git a/app/services/gitea/user/headmap_service.rb b/app/services/gitea/user/headmap_service.rb index 611a8b9d0..eef8e21a9 100644 --- a/app/services/gitea/user/headmap_service.rb +++ b/app/services/gitea/user/headmap_service.rb @@ -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 diff --git a/app/services/gitea/user/update_service.rb b/app/services/gitea/user/update_service.rb index 9826c7ed0..24660158b 100644 --- a/app/services/gitea/user/update_service.rb +++ b/app/services/gitea/user/update_service.rb @@ -24,7 +24,7 @@ class Gitea::User::UpdateService < Gitea::ClientService end def call - patch(url, data_params) + patch(url, data_params, true) end private diff --git a/app/services/gitea/versions/create_service.rb b/app/services/gitea/versions/create_service.rb index 04fed00f2..4424fc276 100644 --- a/app/services/gitea/versions/create_service.rb +++ b/app/services/gitea/versions/create_service.rb @@ -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 diff --git a/app/services/gitea/versions/get_service.rb b/app/services/gitea/versions/get_service.rb index b3c6cf9cc..2af78ab28 100644 --- a/app/services/gitea/versions/get_service.rb +++ b/app/services/gitea/versions/get_service.rb @@ -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 diff --git a/app/services/gitea/versions/list_service.rb b/app/services/gitea/versions/list_service.rb index 5d160fc3e..3505fa254 100644 --- a/app/services/gitea/versions/list_service.rb +++ b/app/services/gitea/versions/list_service.rb @@ -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 diff --git a/app/services/gitea/versions/update_service.rb b/app/services/gitea/versions/update_service.rb index a4c9acfc2..c07620bc8 100644 --- a/app/services/gitea/versions/update_service.rb +++ b/app/services/gitea/versions/update_service.rb @@ -19,7 +19,7 @@ class Gitea::Versions::UpdateService < Gitea::ClientService end def call - patch(url, request_params) + patch(url, request_params, true) end private diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 8ed58f8a7..07eab8981 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -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}") diff --git a/app/views/admins/users/edit.html.erb b/app/views/admins/users/edit.html.erb index 3b4801772..b407cbbe7 100644 --- a/app/views/admins/users/edit.html.erb +++ b/app/views/admins/users/edit.html.erb @@ -63,19 +63,6 @@ <%= f.input :gender, as: :radio_buttons, label: '性别', collection: [%w(男 0), %w(女 1)], wrapper_html: { class: 'col-md-3' } %> -