app/models/file_yard.rb in instiki-0.10.0 vs app/models/file_yard.rb in instiki-0.10.1
- old
+ new
@@ -1,58 +1,58 @@
-require 'fileutils'
-require 'instiki_errors'
-
-class FileYard
-
- attr_reader :files_path
-
- def initialize(files_path, max_upload_size)
- @files_path = files_path
- @max_upload_size = max_upload_size
- FileUtils.mkdir_p(files_path) unless File.exist?(files_path)
- @files = Dir["#{files_path}/*"].collect{|path| File.basename(path) if File.file?(path) }.compact
- end
-
- def upload_file(name, io)
- sanitize_file_name(name)
- if io.kind_of?(Tempfile)
- io.close
- check_upload_size(io.size)
- FileUtils.mv(io.path, file_path(name))
- else
- content = io.read
- check_upload_size(content.length)
- File.open(file_path(name), 'wb') { |f| f.write(content) }
- end
- # just in case, restrict read access and prohibit write access to the uploaded file
- FileUtils.chmod(0440, file_path(name))
- end
-
- def files
- Dir["#{files_path}/*"].collect{|path| File.basename(path) if File.file?(path)}.compact
- end
-
- def has_file?(name)
- files.include?(name)
- end
-
- def file_path(name)
- "#{files_path}/#{name}"
- end
-
- SANE_FILE_NAME = /[-_\.A-Za-z0-9]{1,255}/
-
- def sanitize_file_name(name)
- unless name =~ SANE_FILE_NAME
- raise Instiki::ValidationError.new("Invalid file name: '#{name}'.\n" +
- "Only latin characters, digits, dots, underscores and dashes are accepted.")
- end
- end
-
- def check_upload_size(actual_upload_size)
- if actual_upload_size > @max_upload_size.kilobytes
- raise Instiki::ValidationError.new("Uploaded file size (#{actual_upload_size / 1024} " +
- "kbytes) exceeds the maximum (#{@max_upload_size} kbytes) set for this wiki")
- end
- end
-
-end
+require 'fileutils'
+require 'instiki_errors'
+
+class FileYard
+
+ attr_reader :files_path
+
+ def initialize(files_path, max_upload_size)
+ @files_path = files_path
+ @max_upload_size = max_upload_size
+ FileUtils.mkdir_p(files_path) unless File.exist?(files_path)
+ @files = Dir["#{files_path}/*"].collect{|path| File.basename(path) if File.file?(path) }.compact
+ end
+
+ def upload_file(name, io)
+ sanitize_file_name(name)
+ if io.kind_of?(Tempfile)
+ io.close
+ check_upload_size(io.size)
+ FileUtils.mv(io.path, file_path(name))
+ else
+ content = io.read
+ check_upload_size(content.length)
+ File.open(file_path(name), 'wb') { |f| f.write(content) }
+ end
+ # just in case, restrict read access and prohibit write access to the uploaded file
+ FileUtils.chmod(0440, file_path(name))
+ end
+
+ def files
+ Dir["#{files_path}/*"].collect{|path| File.basename(path) if File.file?(path)}.compact
+ end
+
+ def has_file?(name)
+ files.include?(name)
+ end
+
+ def file_path(name)
+ "#{files_path}/#{name}"
+ end
+
+ SANE_FILE_NAME = /[-_\.A-Za-z0-9]{1,255}/
+
+ def sanitize_file_name(name)
+ unless name =~ SANE_FILE_NAME
+ raise Instiki::ValidationError.new("Invalid file name: '#{name}'.\n" +
+ "Only latin characters, digits, dots, underscores and dashes are accepted.")
+ end
+ end
+
+ def check_upload_size(actual_upload_size)
+ if actual_upload_size > @max_upload_size.kilobytes
+ raise Instiki::ValidationError.new("Uploaded file size (#{actual_upload_size / 1024} " +
+ "kbytes) exceeds the maximum (#{@max_upload_size} kbytes) set for this wiki")
+ end
+ end
+
+end