Merge branch '6087-collection-timing' (early part) refs #6087 refs #6092
[arvados.git] / services / api / app / models / blob.rb
index 5decd77261a44bdc0ec4145cf5b3fce80aa7cb2b..7ae13ef2d0126d0b41b28a344e391ad55a7e6a41 100644 (file)
@@ -1,4 +1,13 @@
 class Blob
+  extend DbCurrentTime
+
+  def initialize locator
+    @locator = locator
+  end
+
+  def empty?
+    !!@locator.match(/^d41d8cd98f00b204e9800998ecf8427e(\+.*)?$/)
+  end
 
   # In order to get a Blob from Keep, you have to prove either
   # [a] you have recently written it to Keep yourself, or
@@ -35,7 +44,7 @@ class Blob
       end
       timestamp = opts[:expire]
     else
-      timestamp = Time.now.to_i + (opts[:ttl] || 600)
+      timestamp = db_current_time.to_i + (opts[:ttl] || 1209600)
     end
     timestamp_hex = timestamp.to_s(16)
     # => "53163cb4"
@@ -82,7 +91,7 @@ class Blob
     if !timestamp.match /^[\da-f]+$/
       raise Blob::InvalidSignatureError.new 'Timestamp is not a base16 number.'
     end
-    if timestamp.to_i(16) < Time.now.to_i
+    if timestamp.to_i(16) < (opts[:now] or db_current_time.to_i)
       raise Blob::InvalidSignatureError.new 'Signature expiry time has passed.'
     end