Merge branch 'dev_trustie' into dev_chain

This commit is contained in:
sylor_huang@126.com 2020-06-23 15:00:33 +08:00
commit b7c86fd83c
7 changed files with 49 additions and 21 deletions

View File

@ -25,10 +25,8 @@ class ProjectsController < ApplicationController
end end
def migrate def migrate
ActiveRecord::Base.transaction do Projects::MigrateForm.new(mirror_params).validate!
Projects::MigrateForm.new(mirror_params).validate! @project = Projects::MigrateService.new(current_user, mirror_params).call
@project = Projects::MigrateService.new(current_user, mirror_params).call
end
rescue Exception => e rescue Exception => e
uid_logger_error(e.message) uid_logger_error(e.message)
tip_exception(e.message) tip_exception(e.message)

View File

@ -32,6 +32,7 @@ class RepositoriesController < ApplicationController
@project_owner = @project.owner @project_owner = @project.owner
@entries = Gitea::Repository::Entries::ListService.new(@project_owner, @project.identifier, ref: @ref).call @entries = Gitea::Repository::Entries::ListService.new(@project_owner, @project.identifier, ref: @ref).call
@entries = @entries.sort_by{ |hash| hash['type'] } @entries = @entries.sort_by{ |hash| hash['type'] }
@path = Gitea.gitea_config[:domain]+"/#{@project.owner.login}/#{@project.identifier}/raw/branch/#{@ref}/"
end end
def sub_entries def sub_entries

View File

@ -18,4 +18,36 @@ module RepositoriesHelper
return nil if author_json.blank? return nil if author_json.blank?
find_user_by_login author_json['login'] find_user_by_login author_json['login']
end end
def readme_render_decode64_content(str, path)
return nil if str.blank?
content = Base64.decode64(str).force_encoding('UTF-8')
c_regex = /\!\[.*?\]\((.*?)\)/
src_regex = /src=\"(.*?)\"/
ss = content.to_s.scan(c_regex)
ss_src = content.to_s.scan(src_regex)
total_images = ss + ss_src
if total_images.length > 0
total_images.each do |s|
image_title = /\"(.*?)\"/
r_content = s[0]
remove_title = r_content.to_s.scan(image_title)
if remove_title.length > 0
r_content = r_content.gsub(/#{remove_title[0]}/, "").strip
end
if r_content.include?("?")
new_r_content = r_content + "&raw=true"
else
new_r_content = r_content + "?raw=true"
end
unless r_content.include?("http://") || r_content.include?("https://") || r_content.include?("mailto:")
new_r_content = "#{path}" + new_r_content
end
content = content.gsub(/#{r_content}/, new_r_content)
end
end
return content
end
end end

View File

@ -8,7 +8,7 @@ class MigrateRemoteRepositoryJob < ApplicationJob
gitea_repository = Gitea::Repository::MigrateService.new(token, params).call gitea_repository = Gitea::Repository::MigrateService.new(token, params).call
if gitea_repository if gitea_repository
repo&.project&.update_columns(gpid: gitea_repository["id"], identifier: gitea_repository["name"]) repo&.project&.update_columns(gpid: gitea_repository["id"])
repo&.mirror&.update_columns(status: Mirror.statuses[:succeeded]) repo&.mirror&.update_columns(status: Mirror.statuses[:succeeded])
end end
end end

View File

@ -8,12 +8,10 @@ class Projects::MigrateService < ApplicationService
def call def call
@project = Project.new(project_params) @project = Project.new(project_params)
ActiveRecord::Base.transaction do if @project.save!
if @project.save! Repositories::MigrateService.new(user, @project, repository_params).call
Repositories::MigrateService.new(user, @project, repository_params).call else
else #
#
end
end end
@project @project
rescue => e rescue => e
@ -27,11 +25,12 @@ class Projects::MigrateService < ApplicationService
{ {
name: params[:name], name: params[:name],
user_id: params[:user_id], user_id: params[:user_id],
project_type: set_project_type,
description: params[:description], description: params[:description],
identifier: params[:repository_name],
is_public: project_secretion[:public],
project_category_id: params[:project_category_id], project_category_id: params[:project_category_id],
project_language_id: params[:project_language_id], project_language_id: params[:project_language_id],
is_public: project_secretion[:public],
project_type: set_project_type
} }
end end

View File

@ -9,13 +9,11 @@ class Repositories::MigrateService < ApplicationService
def call def call
@repository = Repository.new(repository_params) @repository = Repository.new(repository_params)
ActiveRecord::Base.transaction do if @repository.save!
if @repository.save! @repository.set_mirror! if wrapper_mirror
@repository.set_mirror! if wrapper_mirror MigrateRemoteRepositoryJob.perform_later(@repository.id, user.gitea_token, gitea_repository_params)
MigrateRemoteRepositoryJob.perform_later(@repository.id, user.gitea_token, gitea_repository_params)
end
@repository
end end
@repository
rescue => e rescue => e
puts "create mirror repository service error: #{e.message}" puts "create mirror repository service error: #{e.message}"
raise Error, e.message raise Error, e.message
@ -23,7 +21,7 @@ class Repositories::MigrateService < ApplicationService
private private
def repository_params def repository_params
params.merge(project_id: project.id) params.merge(project_id: project.id, identifier: params[:identifier])
end end
def gitea_repository_params def gitea_repository_params

View File

@ -17,7 +17,7 @@ json.entries do
content = content =
if entry['name'] === 'README.md' if entry['name'] === 'README.md'
content = Gitea::Repository::Entries::GetService.call(@project_owner, @project.identifier, entry['name'], ref: @ref)['content'] content = Gitea::Repository::Entries::GetService.call(@project_owner, @project.identifier, entry['name'], ref: @ref)['content']
render_decode64_content content readme_render_decode64_content(content, @path)
else else
entry['content'] entry['content']
end end