mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-23 23:58:31 -05:00
44 lines
671 B
Ruby
44 lines
671 B
Ruby
|
class AvatarUploadService
|
||
|
|
||
|
attr_accessor :source
|
||
|
attr_reader :filesize, :file
|
||
|
|
||
|
def initialize(file, source)
|
||
|
@source = source
|
||
|
@file , @filesize = construct(file)
|
||
|
end
|
||
|
|
||
|
def construct(file)
|
||
|
case source
|
||
|
when :url
|
||
|
build_from_url(file)
|
||
|
when :image
|
||
|
[file, File.size(file.tempfile)]
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def build_from_url(url)
|
||
|
temp = ::UriAdapter.new(url)
|
||
|
return temp.build_uploaded_file, temp.file_size
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
class AvatarUploadPolicy
|
||
|
|
||
|
def initialize(avatar)
|
||
|
@avatar = avatar
|
||
|
end
|
||
|
|
||
|
def max_size_kb
|
||
|
SiteSetting.max_image_size_kb * 1024
|
||
|
end
|
||
|
|
||
|
def too_big?
|
||
|
@avatar.filesize > max_size_kb
|
||
|
end
|
||
|
|
||
|
end
|