diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb index fb922c3dd..60895dc0c 100644 --- a/app/controllers/admin/newsletters_controller.rb +++ b/app/controllers/admin/newsletters_controller.rb @@ -1,19 +1,12 @@ -require 'zip' class Admin::NewslettersController < Admin::BaseController def index end def users - folder = Rails.root + "/tmp/" - zipfile_name = folder + "emails.zip" - - Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile| - zipfile.get_output_stream("emails.txt") do |os| - os.write User.newsletter.pluck(:email).join("\n") - end - end - send_file(File.join(folder + "emails.zip"), :type => 'application/zip') + zip = NewsletterZip.new('emails') + zip.create + send_file(File.join(zip.path), type: 'application/zip') end end \ No newline at end of file diff --git a/lib/newsletter_zip.rb b/lib/newsletter_zip.rb new file mode 100644 index 000000000..565b9580d --- /dev/null +++ b/lib/newsletter_zip.rb @@ -0,0 +1,25 @@ +require 'zip' +class NewsletterZip + attr_accessor :filename + + def initialize(filename) + @filename = filename + end + + def emails + User.newsletter.pluck(:email).join("\n") + end + + def path + Rails.root + "/tmp/#{filename}.zip" + end + + def create + Zip::File.open("#{filename}.zip", Zip::File::CREATE) do |zipfile| + zipfile.get_output_stream("#{filename}.txt") do |file| + file.write emails + end + end + end + +end \ No newline at end of file