Refactor Users#upload_avatar method

Moved avatar file upload to ```AvatarUploadService``` class and
```AvatarUploadPolicy```

Address review comments + require missing file in spec
This commit is contained in:
railsaholic
2013-11-11 23:21:14 +05:30
parent 20f06f3efc
commit 58f78e9001
4 changed files with 148 additions and 36 deletions

View File

@@ -0,0 +1,43 @@
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