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.kilobytes
  end

  def too_big?
    @avatar.filesize > max_size_kb
  end

end