From a91a30260b0d474fd1704b4cde7ee7c3bd1d9a41 Mon Sep 17 00:00:00 2001
From: David Heinemeier Hansson <david@loudthinking.com>
Date: Mon, 3 Jul 2017 23:19:51 +0200
Subject: Update for AWS S3 v2 API and test it when supplying the right ENVs

---
 lib/active_file/site.rb          |  1 +
 lib/active_file/sites/s3_site.rb | 23 ++++++++---------------
 2 files changed, 9 insertions(+), 15 deletions(-)

(limited to 'lib/active_file')

diff --git a/lib/active_file/site.rb b/lib/active_file/site.rb
index 33494b916a..e44c0145a9 100644
--- a/lib/active_file/site.rb
+++ b/lib/active_file/site.rb
@@ -41,3 +41,4 @@ module ActiveFile::Sites
 end
 
 require "active_file/sites/disk_site"
+require "active_file/sites/s3_site"
diff --git a/lib/active_file/sites/s3_site.rb b/lib/active_file/sites/s3_site.rb
index 838163a23d..4ede843cb4 100644
--- a/lib/active_file/sites/s3_site.rb
+++ b/lib/active_file/sites/s3_site.rb
@@ -16,7 +16,7 @@ class ActiveFile::Sites::S3Site < ActiveFile::Site
     if block_given?
       stream(key, &block)
     else
-      object_for(key).read
+      object_for(key).get.body.read
     end
   end
 
@@ -25,27 +25,20 @@ class ActiveFile::Sites::S3Site < ActiveFile::Site
   end
 
   def exist?(key)
-    object_for(key).exist?
+    object_for(key).exists?
   end
 
 
+  def url(key, disposition: :inline, expires_in: nil)
+    object_for(key).presigned_url(:get, expires_in: expires_in)
+  end
+
   def byte_size(key)
-    object_for(key).head[:size]
+    object_for(key).size
   end
 
   def checksum(key)
-    head = object_for(key).head
-
-    # If the etag has no dashes, it's the MD5
-    if !head.etag.include?("-")
-      head.etag.gsub('"', '')
-    # Check for md5 in metadata if it was uploaded via multipart
-    elsif md5sum = head.meta["md5sum"]
-      md5sum
-    # Otherwise, we don't have a digest yet for this key
-    else
-      nil
-    end
+    object_for(key).etag.remove(/"/)
   end
 
 
-- 
cgit v1.2.3