-
-
Save luispimenta/6b6bf9cdd441e0b928466811e8158c42 to your computer and use it in GitHub Desktop.
Zip files from remote server (S3)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protect_from_forgery :except => :get_job_resumes #Optional | |
require 'zip' | |
def get_job_resumes | |
@job = Job.find(params[:job_id]) | |
@file = "#{Rails.root}/files/cvs.zip" | |
@applications = Application.get_applicants_all(@job.id) # app context method | |
Zip::ZipOutputStream.open(@file) do |zos| | |
@applications.each do |application| | |
user = application.user | |
if user.account.resume.present? #check if file exists | |
zos.put_next_entry(user.account.resume.filename) #filename | |
# user.account.resume.url is a S3 file url | |
zos.print(URI.parse(user.account.resume.url).read) if user.account.resume_ok? | |
end | |
end | |
end | |
send_file(@file, filename: ""[email protected]+"_cvs.zip", type: "application/octet-stream") | |
end | |
# Prevent 404 error | |
def resume_ok? | |
begin | |
return false if resume.url.nil? | |
(URI.parse(resume.url).read) | |
return true | |
rescue OpenURI::HTTPError => e | |
return false | |
end | |
end | |
# Requisites | |
gem 'rubyzip' | |
gem 'zip-zip' | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment