mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			756 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			756 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| class LocalResource
 | |
|   attr_reader :uri
 | |
| 
 | |
|   def initialize(uri, file_type = nil)
 | |
|     @uri = URI(uri)
 | |
|     @file_type = file_type
 | |
|   end
 | |
| 
 | |
|   def file
 | |
|     @file ||= Tempfile.new(tmp_filename, tmp_folder, encoding: encoding).tap do |f|
 | |
|       io.rewind
 | |
|       f.write(io.read)
 | |
|       f.close
 | |
|     end
 | |
|     @file.open
 | |
|   end
 | |
| 
 | |
|   def io
 | |
|     # TODO: should we use RestClient here too ?
 | |
|     @io ||= uri.open(read_timeout: 5)
 | |
|   end
 | |
| 
 | |
|   def encoding
 | |
|     io.rewind
 | |
|     io.read.encoding
 | |
|   end
 | |
| 
 | |
|   def find_file_type
 | |
|     @file_type ? @file_type.split('/').last : Pathname.new(uri.path).extname
 | |
|   end
 | |
| 
 | |
|   def tmp_filename
 | |
|     [Time.now.to_i.to_s, find_file_type].join('.')
 | |
|   end
 | |
| 
 | |
|   def tmp_folder
 | |
|     Rails.root.join('tmp')
 | |
|   end
 | |
| 
 | |
|   def filename
 | |
|     File.basename(uri.path)
 | |
|   end
 | |
| end
 | 
