| @@ -381,7 +381,12 @@ class ApplicationController < ActionController::Base | |||||
| end | end | ||||
| def current_user | def current_user | ||||
| User.current | |||||
| if Rails.env.development? | |||||
| User.find(1) | |||||
| else | |||||
| User.current | |||||
| end | |||||
| # User.current | |||||
| end | end | ||||
| ## 默认输出json | ## 默认输出json | ||||
| @@ -16,6 +16,7 @@ class ProjectsController < ApplicationController | |||||
| ActiveRecord::Base.transaction do | ActiveRecord::Base.transaction do | ||||
| Projects::CreateForm.new(project_params).validate! | Projects::CreateForm.new(project_params).validate! | ||||
| @project = Projects::CreateService.new(current_user, project_params).call | @project = Projects::CreateService.new(current_user, project_params).call | ||||
| end | end | ||||
| rescue Exception => e | rescue Exception => e | ||||
| uid_logger_error(e.message) | uid_logger_error(e.message) | ||||
| @@ -123,6 +123,10 @@ class RepositoriesController < ApplicationController | |||||
| end | end | ||||
| end | end | ||||
| def repo_hook | |||||
| Rails.logger.info("#####______222________########") | |||||
| end | |||||
| private | private | ||||
| def find_project | def find_project | ||||
| @@ -0,0 +1,19 @@ | |||||
| class ProjectCreateChainJob < ApplicationJob | |||||
| queue_as :default | |||||
| def perform(owner_login, reponame) | |||||
| status = 0 | |||||
| 5.times do |i| | |||||
| if status == 200 | |||||
| Rails.logger.info("########_repository__#{reponame}______create_chain_success__try:_#{i+1}_") | |||||
| break | |||||
| else | |||||
| Rails.logger.info("########_repository__#{reponame}______start_to_create_chain__try:_#{i+1}_") | |||||
| create_chain = system("chain trustieCreate #{owner_login} #{reponame}") | |||||
| status = create_chain[:status].to_i | |||||
| Rails.logger.info("########_repository__#{reponame}__create_chain:___#{create_chain}____failed_to_create_chain__") | |||||
| end | |||||
| end | |||||
| end | |||||
| end | |||||
| @@ -0,0 +1,23 @@ | |||||
| class Gitea::Repository::Hooks::CreateService < Gitea::ClientService | |||||
| attr_reader :user, :repo_name, :body | |||||
| def initialize(user, repo_name, body) | |||||
| @user = user | |||||
| @repo_name = repo_name | |||||
| @body = body | |||||
| end | |||||
| def call | |||||
| response = post(url, params) | |||||
| end | |||||
| private | |||||
| def params | |||||
| body.merge(token: user.gitea_token) | |||||
| end | |||||
| def url | |||||
| "/repos/#{user.login}/#{repo_name}/hooks".freeze | |||||
| end | |||||
| end | |||||
| @@ -14,6 +14,24 @@ class Repositories::CreateService < ApplicationService | |||||
| gitea_repository = Gitea::Repository::CreateService.new(user.gitea_token, gitea_repository_params).call | gitea_repository = Gitea::Repository::CreateService.new(user.gitea_token, gitea_repository_params).call | ||||
| sync_project(@repository, gitea_repository) | sync_project(@repository, gitea_repository) | ||||
| sync_repository(@repository, gitea_repository) | sync_repository(@repository, gitea_repository) | ||||
| Rails.logger.info("#######________reuqest_domain____#########{EduSetting.get("host_name")}") | |||||
| #if project.project_type == "common" | |||||
| #hook_params = { | |||||
| # active: true, | |||||
| # type: "gitea" | |||||
| # branch_filter: "", | |||||
| # config: { | |||||
| # content_type: "application/json", | |||||
| # url: "#{EduSetting.get("host_name")}/repositories/#{project.id}/repo_hooks", | |||||
| # http_method: "post" | |||||
| #}, | |||||
| #events: ["create", "pull", "push"], | |||||
| #} | |||||
| #Gitea::Repository::Hooks::CreateService.new(user, @repository.try(:identifier), hook_params).call | |||||
| #end | |||||
| # 托管项目创建上链操作 | |||||
| ProjectCreateChainJob.perform_later(user.try(:login), @repository.try(:identifier)) if project.project_type == "common" | |||||
| end | end | ||||
| @repository | @repository | ||||
| end | end | ||||
| @@ -8,8 +8,8 @@ json.projects @projects do |project| | |||||
| json.name project.name | json.name project.name | ||||
| json.description Nokogiri::HTML(project.description).text | json.description Nokogiri::HTML(project.description).text | ||||
| json.visits project.visits | json.visits project.visits | ||||
| json.praises_count project.praises_count | |||||
| json.forked_count project.forked_count | |||||
| json.praises_count project.praises_count.to_i | |||||
| json.forked_count project.forked_count.to_i | |||||
| json.is_public project.is_public | json.is_public project.is_public | ||||
| json.mirror_url project.repository&.mirror_url | json.mirror_url project.repository&.mirror_url | ||||
| json.last_update_time render_unix_time(project.updated_on) | json.last_update_time render_unix_time(project.updated_on) | ||||
| @@ -192,6 +192,7 @@ Rails.application.routes.draw do | |||||
| post :create_file | post :create_file | ||||
| put :update_file | put :update_file | ||||
| delete :delete_file | delete :delete_file | ||||
| post :repo_hook | |||||
| end | end | ||||
| end | end | ||||