调整日志输出

This commit is contained in:
xiaoxiaoqiong 2022-06-09 14:50:00 +08:00
parent 43792d3100
commit cc2c0e8e26
1 changed files with 218 additions and 218 deletions

View File

@ -1,218 +1,218 @@
module RepositoriesHelper module RepositoriesHelper
def render_permission(user, project) def render_permission(user, project)
return "Admin" if user&.admin? return "Admin" if user&.admin?
project.get_premission(user) project.get_premission(user)
end end
def render_decode64_content(str) def render_decode64_content(str)
return nil if str.blank? return nil if str.blank?
Base64.decode64(str).force_encoding("UTF-8").encode("UTF-8", invalid: :replace) Base64.decode64(str).force_encoding("UTF-8").encode("UTF-8", invalid: :replace)
end end
def download_type(str) def download_type(str)
default_type = %w(xlsx xls ppt pptx pdf zip 7z rar exe pdb obj idb RData rdata doc docx mpp vsdx dot otf eot ttf woff woff2 mp4 mov wmv flv mpeg avi avchd webm mkv) default_type = %w(xlsx xls ppt pptx pdf zip 7z rar exe pdb obj idb RData rdata doc docx mpp vsdx dot otf eot ttf woff woff2 mp4 mov wmv flv mpeg avi avchd webm mkv)
default_type.include?(str&.downcase) || str.blank? default_type.include?(str&.downcase) || str.blank?
end end
def image_type?(str) def image_type?(str)
default_type = %w(png jpg gif tif psd svg bmp webp jpeg ico psd) default_type = %w(png jpg gif tif psd svg bmp webp jpeg ico psd)
default_type.include?(str&.downcase) default_type.include?(str&.downcase)
end end
def is_readme?(type, str) def is_readme?(type, str)
return false if type != 'file' || str.blank? return false if type != 'file' || str.blank?
readme_types = ["readme.md", "readme", "readme_en.md", "readme_zh.md", "readme_en", "readme_zh"] readme_types = ["readme.md", "readme", "readme_en.md", "readme_zh.md", "readme_en", "readme_zh"]
readme_types.include?(str.to_s.downcase) || str =~ CustomRegexp::MD_REGEX readme_types.include?(str.to_s.downcase) || str =~ CustomRegexp::MD_REGEX
end end
def render_commit_author(author_json) def render_commit_author(author_json)
return nil if author_json.blank? || (author_json["id"].blank? && author_json['name'].blank?) return nil if author_json.blank? || (author_json["id"].blank? && author_json['name'].blank?)
if author_json["id"].present? if author_json["id"].present?
return find_user_by_gitea_uid author_json['id'] return find_user_by_gitea_uid author_json['id']
end end
if author_json["id"].nil? && (author_json["name"].present? && author_json["email"].present?) if author_json["id"].nil? && (author_json["name"].present? && author_json["email"].present?)
return find_user_by_login_and_mail(author_json['name'], author_json["email"]) return find_user_by_login_and_mail(author_json['name'], author_json["email"])
end end
end end
def render_cache_commit_author(author_json) def render_cache_commit_author(author_json)
if author_json["name"].present? && author_json["email"].present? if author_json["name"].present? && author_json["email"].present?
return find_user_in_redis_cache(author_json['name'], author_json['email']) return find_user_in_redis_cache(author_json['name'], author_json['email'])
end end
if author_json["Name"].present? && author_json["Email"].present? if author_json["Name"].present? && author_json["Email"].present?
return find_user_in_redis_cache(author_json['Name'], author_json['Email']) return find_user_in_redis_cache(author_json['Name'], author_json['Email'])
end end
end end
def readme_render_decode64_content(str, owner, repo, ref, path) def readme_render_decode64_content(str, owner, repo, ref, path)
return nil if str.blank? return nil if str.blank?
begin begin
content = Base64.decode64(str).force_encoding('UTF-8') content = Base64.decode64(str).force_encoding('UTF-8')
c_regex = /\!\[.*?\]\((.*?)\)/ c_regex = /\!\[.*?\]\((.*?)\)/
src_regex = /src=\"(.*?)\"/ src_regex = /src=\"(.*?)\"/
src2_regex = /src='(.*?)'/ src2_regex = /src='(.*?)'/
ss = content.to_s.scan(c_regex) ss = content.to_s.scan(c_regex)
ss_src = content.scan(src_regex) ss_src = content.scan(src_regex)
ss_src2 = content.scan(src2_regex) ss_src2 = content.scan(src2_regex)
total_images = ss + ss_src + ss_src2 total_images = ss + ss_src + ss_src2
if total_images.length > 0 if total_images.length > 0
total_images.each do |s| total_images.each do |s|
begin begin
image_title = /\"(.*?)\"/ image_title = /\"(.*?)\"/
r_content = s[0] r_content = s[0]
remove_title = r_content.to_s.scan(image_title) remove_title = r_content.to_s.scan(image_title)
# if remove_title.length > 0 # if remove_title.length > 0
# r_content = r_content.gsub(/#{remove_title[0]}/, "").strip # r_content = r_content.gsub(/#{remove_title[0]}/, "").strip
# end # end
path_last = r_content path_last = r_content
path_current = "" path_current = ""
# 相对路径处理 # 相对路径处理
if r_content.start_with?("../") if r_content.start_with?("../")
relative_path_length = r_content.split("../").size - 1 relative_path_length = r_content.split("../").size - 1
path_pre = path.split("/").size - 1 - relative_path_length path_pre = path.split("/").size - 1 - relative_path_length
path_pre = 0 if path_pre < 0 path_pre = 0 if path_pre < 0
path_current = path_pre == 0 ? "" : path.split("/")[0..path_pre].join("/") path_current = path_pre == 0 ? "" : path.split("/")[0..path_pre].join("/")
path_last = r_content.split("../").last path_last = r_content.split("../").last
elsif r_content.start_with?("/") # 根路径处理 elsif r_content.start_with?("/") # 根路径处理
path_last = r_content[1..r_content.size] path_last = r_content[1..r_content.size]
else else
path_current = path path_current = path
end end
# if r_content.include?("?") # if r_content.include?("?")
# new_r_content = r_content + "&raw=true" # new_r_content = r_content + "&raw=true"
# else # else
# new_r_content = r_content + "?raw=true" # new_r_content = r_content + "?raw=true"
# end # end
new_r_content = r_content new_r_content = r_content
unless r_content.include?("http://") || r_content.include?("https://") || r_content.include?("mailto:") unless r_content.include?("http://") || r_content.include?("https://") || r_content.include?("mailto:")
# new_r_content = "#{path}" + new_r_content # new_r_content = "#{path}" + new_r_content
new_r_content = [base_url, "/api/#{owner&.login}/#{repo.identifier}/raw?filepath=#{path_current}/#{path_last}&ref=#{ref}"].join new_r_content = [base_url, "/api/#{owner&.login}/#{repo.identifier}/raw?filepath=#{path_current}/#{path_last}&ref=#{ref}"].join
end end
content = content.gsub(/src=\"#{r_content}\"/, "src=\"#{new_r_content}\"").gsub(/src='#{r_content}'/, "src=\"#{new_r_content}\"") content = content.gsub(/src=\"#{r_content}\"/, "src=\"#{new_r_content}\"").gsub(/src='#{r_content}'/, "src=\"#{new_r_content}\"")
rescue rescue
next next
end end
end end
end end
return content return content
rescue rescue
return str return str
end end
end end
# author hui.he # author hui.he
def new_readme_render_decode64_content(str, owner, repo, ref, readme_path, readme_name) def new_readme_render_decode64_content(str, owner, repo, ref, readme_path, readme_name)
file_path = readme_path.include?('/') ? readme_path.gsub("/#{readme_name}", '') : readme_path.gsub("#{readme_name}", '') file_path = readme_path.include?('/') ? readme_path.gsub("/#{readme_name}", '') : readme_path.gsub("#{readme_name}", '')
return nil if str.blank? return nil if str.blank?
content = Base64.decode64(str).force_encoding('UTF-8') content = Base64.decode64(str).force_encoding('UTF-8')
s_regex = /\[.*?\]\((.*?)\)/ s_regex = /\[.*?\]\((.*?)\)/
src_regex = /src=\"(.*?)\"/ src_regex = /src=\"(.*?)\"/
ss = content.to_s.scan(s_regex) ss = content.to_s.scan(s_regex)
ss_src = content.to_s.scan(src_regex) ss_src = content.to_s.scan(src_regex)
total_sources = ss + ss_src total_sources = ss + ss_src
total_sources.uniq! total_sources.uniq!
total_sources.each do |s| total_sources.each do |s|
begin begin
s_content = s[0] s_content = s[0]
# 链接直接跳过不做替换 # 链接直接跳过不做替换
next if s_content.starts_with?('http://') || s_content.starts_with?('https://') || s_content.starts_with?('mailto:') || s_content.blank? next if s_content.starts_with?('http://') || s_content.starts_with?('https://') || s_content.starts_with?('mailto:') || s_content.blank?
ext = File.extname(s_content)[1..-1] ext = File.extname(s_content)[1..-1]
if image_type?(ext) || download_type(ext) if image_type?(ext) || download_type(ext)
s_content = File.expand_path(s_content, file_path) s_content = File.expand_path(s_content, file_path)
s_content = s_content.split("#{Rails.root}/")[1] s_content = s_content.split("#{Rails.root}/")[1]
# content = content.gsub(s[0], "/#{s_content}") # content = content.gsub(s[0], "/#{s_content}")
s_content = [base_url, "/api/#{owner&.login}/#{repo.identifier}/raw?filepath=#{s_content}&ref=#{ref}"].join s_content = [base_url, "/api/#{owner&.login}/#{repo.identifier}/raw?filepath=#{s_content}&ref=#{ref}"].join
content = content.gsub(s[0], s_content) content = content.gsub(s[0], s_content)
else else
path = [owner&.login, repo&.identifier, 'tree', ref, file_path].join("/") path = [owner&.login, repo&.identifier, 'tree', ref, file_path].join("/")
s_content = File.expand_path(s_content, path) s_content = File.expand_path(s_content, path)
s_content = s_content.split("#{Rails.root}/")[1] s_content = s_content.split("#{Rails.root}/")[1]
content = content.gsub(s[0], "/#{s_content}") content = content.gsub(s[0], "/#{s_content}")
end end
rescue rescue
next next
end end
end end
return content return content
rescue rescue
return str return str
end end
# unix_time values for example: 1604382982 # unix_time values for example: 1604382982
def render_format_time_with_unix(unix_time) def render_format_time_with_unix(unix_time)
Time.at(unix_time).strftime("%Y-%m-%d %H:%M") Time.at(unix_time).strftime("%Y-%m-%d %H:%M")
end end
# date for example: 2020-11-01T19:57:27+08:00 # date for example: 2020-11-01T19:57:27+08:00
def render_format_time_with_date(date) def render_format_time_with_date(date)
date.to_time.strftime("%Y-%m-%d %H:%M") date.to_time.strftime("%Y-%m-%d %H:%M")
end end
def readme_decode64_content(entry, owner, repo, ref, path=nil) def readme_decode64_content(entry, owner, repo, ref, path=nil)
Rails.logger.info("entry===#{entry["type"]} #{entry["name"]}") Rails.logger.info("entry===#{entry["type"]} #{entry["name"]}")
content = Gitea::Repository::Entries::GetService.call(owner, repo.identifier, URI.escape(entry['path']), ref: ref)['content'] content = Gitea::Repository::Entries::GetService.call(owner, repo.identifier, URI.escape(entry['path']), ref: ref)['content']
Rails.logger.info("content===#{content}") # Rails.logger.info("content===#{content}")
# readme_render_decode64_content(content, owner, repo, ref) # readme_render_decode64_content(content, owner, repo, ref)
new_readme_render_decode64_content(content, owner, repo, ref, entry['path'], entry['name']) new_readme_render_decode64_content(content, owner, repo, ref, entry['path'], entry['name'])
end end
def decode64_content(entry, owner, repo, ref, path=nil) def decode64_content(entry, owner, repo, ref, path=nil)
if is_readme?(entry['type'], entry['name']) if is_readme?(entry['type'], entry['name'])
Rails.logger.info("entry===#{entry["type"]} #{entry["name"]}") Rails.logger.info("entry===#{entry["type"]} #{entry["name"]}")
content = Gitea::Repository::Entries::GetService.call(owner, repo.identifier, URI.escape(entry['path']), ref: ref)['content'] content = Gitea::Repository::Entries::GetService.call(owner, repo.identifier, URI.escape(entry['path']), ref: ref)['content']
Rails.logger.info("content===#{content}") # Rails.logger.info("content===#{content}")
# readme_render_decode64_content(content, owner, repo, ref) # readme_render_decode64_content(content, owner, repo, ref)
return Base64.decode64(content).force_encoding('UTF-8') return Base64.decode64(content).force_encoding('UTF-8')
else else
file_type = File.extname(entry['name'].to_s)[1..-1] file_type = File.extname(entry['name'].to_s)[1..-1]
if image_type?(file_type) if image_type?(file_type)
return entry['content'].nil? ? Gitea::Repository::Entries::GetService.call(owner, repo.identifier, URI.escape(entry['path']), ref: ref)['content'] : entry['content'] return entry['content'].nil? ? Gitea::Repository::Entries::GetService.call(owner, repo.identifier, URI.escape(entry['path']), ref: ref)['content'] : entry['content']
end end
if download_type(file_type) if download_type(file_type)
return entry['content'] return entry['content']
end end
render_decode64_content(entry['content']) render_decode64_content(entry['content'])
end end
end end
def base64_to_image(path, content) def base64_to_image(path, content)
# generate to https://git.trusite.net/pawm36ozq/-/raw/branch/master/entrn.png" # generate to https://git.trusite.net/pawm36ozq/-/raw/branch/master/entrn.png"
content = Base64.decode64(content) content = Base64.decode64(content)
File.open(path, 'wb') { |f| f.write(content) } File.open(path, 'wb') { |f| f.write(content) }
end end
def render_download_image_url(dir_path, file_path, content) def render_download_image_url(dir_path, file_path, content)
full_path = file_path.starts_with?("/") ? [dir_path, file_path].join("") : [dir_path, file_path].join("/") full_path = file_path.starts_with?("/") ? [dir_path, file_path].join("") : [dir_path, file_path].join("/")
file_name = full_path.split("/")[-1] file_name = full_path.split("/")[-1]
# 用户名/项目标识/文件路径 # 用户名/项目标识/文件路径
dir_path = generate_dir_path(full_path.split("/"+file_name)[0]) dir_path = generate_dir_path(full_path.split("/"+file_name)[0])
file_path = [dir_path, file_name].join('/') file_path = [dir_path, file_name].join('/')
puts "##### render_download_image_url file_path: #{file_path}" puts "##### render_download_image_url file_path: #{file_path}"
base64_to_image(file_path, content) base64_to_image(file_path, content)
file_path = file_path[6..-1] file_path = file_path[6..-1]
File.join(base_url, file_path) File.join(base_url, file_path)
end end
def generate_dir_path(dir_path) def generate_dir_path(dir_path)
# tmp_dir_path # tmp_dir_path
# eg: jasder/forgeplus/raw/branch/ref # eg: jasder/forgeplus/raw/branch/ref
dir_path = ["public", tmp_dir, dir_path].join('/') dir_path = ["public", tmp_dir, dir_path].join('/')
puts "#### dir_path: #{dir_path}" puts "#### dir_path: #{dir_path}"
unless Dir.exists?(dir_path) unless Dir.exists?(dir_path)
FileUtils.mkdir_p(dir_path) ##不成功这里会抛异常 FileUtils.mkdir_p(dir_path) ##不成功这里会抛异常
end end
dir_path dir_path
end end
def tmp_dir def tmp_dir
"repo" "repo"
end end
end end