forked from jasder/forgeplus
83 lines
2.0 KiB
Ruby
83 lines
2.0 KiB
Ruby
|
require 'open-uri'
|
||
|
|
||
|
module Util
|
||
|
module_function
|
||
|
|
||
|
def days_between(time, other_time)
|
||
|
raise ArgumentError if time.blank? || other_time.blank?
|
||
|
Date.parse(time.to_s) - Date.parse(other_time.to_s)
|
||
|
end
|
||
|
|
||
|
def convert_base64_image(str, **opts)
|
||
|
return if str.blank?
|
||
|
|
||
|
Base64ImageConverter.new(**opts).convert(str)
|
||
|
end
|
||
|
|
||
|
def write_file(io, path)
|
||
|
dir = File.dirname(path)
|
||
|
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
||
|
|
||
|
Rails.logger.info("### save file #{path}, size: #{io.size} ~")
|
||
|
File.open(path, 'wb') do |file|
|
||
|
if io.respond_to?(:read)
|
||
|
io.rewind
|
||
|
while buffer = io.read(8192)
|
||
|
file.write(buffer)
|
||
|
end
|
||
|
else
|
||
|
file.write(io)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def download_file(url, save_path)
|
||
|
data = open(url, &:read)
|
||
|
file = File.new(save_path, 'w+')
|
||
|
file.binmode
|
||
|
file << data
|
||
|
file.flush
|
||
|
file.close
|
||
|
file
|
||
|
end
|
||
|
|
||
|
def logger_error(exception)
|
||
|
Rails.logger.error(exception.message)
|
||
|
exception.backtrace.each { |message| Rails.logger.error(message) }
|
||
|
end
|
||
|
|
||
|
def map_or_pluck(relation, name)
|
||
|
relation.is_a?(Array) || relation.loaded? ? relation.map(&name.to_sym) : relation.pluck(name)
|
||
|
end
|
||
|
|
||
|
def extract_content(str)
|
||
|
return '' if str.blank?
|
||
|
str.gsub(/<\/?.*?>/, '').gsub(/[\n\t\r]/, '').gsub(/ /, '')
|
||
|
end
|
||
|
|
||
|
def conceal(str, type = nil)
|
||
|
str = str.to_s
|
||
|
return if str.blank?
|
||
|
|
||
|
case type
|
||
|
when :phone then "#{str[0..2]}****#{str[-4..-1]}"
|
||
|
when :email then "#{str[0]}***#{str[(str.rindex('@')-1)..-1]}"
|
||
|
else "#{str[0..2]}***#{str[-3..-1]}"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def display_cost_time(time)
|
||
|
time = time.to_i
|
||
|
return if time.zero? || time < 60
|
||
|
|
||
|
day = time / (24 * 60 * 60)
|
||
|
hour = (time % (24 * 60 * 60)) / (60 * 60)
|
||
|
minute = (time % (60 * 60)) / 60
|
||
|
|
||
|
str = ''
|
||
|
str += "#{day}天" unless day.zero?
|
||
|
str += "#{hour}小时" unless hour.zero?
|
||
|
str += "#{minute}分" unless minute.zero?
|
||
|
str
|
||
|
end
|
||
|
end
|