summaryrefslogtreecommitdiff
path: root/app/controllers/downloads_controller.rb
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2015-03-28 23:14:33 -0700
committerJesse Morgan <jesse@jesterpm.net>2015-03-28 23:14:33 -0700
commit1370d21460255914e03754fb0f20052e6b3002d7 (patch)
tree7d8275a293e71286df430bef3e55d6b0ebdf9a4c /app/controllers/downloads_controller.rb
parent43743c4b42b01eb95bec6ab5e4991121b06c9c36 (diff)
Crude first pass at downloading files.
Diffstat (limited to 'app/controllers/downloads_controller.rb')
-rw-r--r--app/controllers/downloads_controller.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/controllers/downloads_controller.rb b/app/controllers/downloads_controller.rb
index 300d0b1..2681b0a 100644
--- a/app/controllers/downloads_controller.rb
+++ b/app/controllers/downloads_controller.rb
@@ -1,3 +1,6 @@
+require 'aws-sdk-core/s3'
+require 'fileutils'
+
class DownloadsController < ApplicationController
before_action :set_download, only: [:show, :edit, :update, :destroy]
@@ -7,6 +10,25 @@ class DownloadsController < ApplicationController
@downloads = Download.all
end
+ # GET /downloads/:filename
+ def download
+ download = Download.find_by(filename: params[:filename]) or not_found
+
+ s3client = Aws::S3::Client.new()
+ s3obj = Aws::S3::Object.new(ENV['S3_DOWNLOADS_BUCKET'], download.filename, client: s3client)
+ resp = s3obj.get
+
+ FileUtils.mkdir_p(Rails.root.join('tmp', 'downloads'))
+
+ cached_filename = Rails.root.join('tmp', 'downloads', download.filename)
+
+ File.open(cached_filename, 'wb') do |file|
+ file.write resp.body.read
+ end
+
+ send_file cached_filename
+ end
+
# GET /downloads/1
# GET /downloads/1.json
def show