module GitLfsS3::CephPresignerService
Public Instance Methods
signed_url(obj)
click to toggle source
# File lib/git-lfs-s3/services/ceph_presigner.rb, line 15 def signed_url(obj) expire_at = (DateTime.now + 1).strftime('%s') secret_access_key = GitLfsS3::Application.settings.aws_secret_access_key access_key_id = GitLfsS3::Application.settings.aws_access_key_id endpoint = GitLfsS3::Application.settings.endpoint digest = OpenSSL::Digest.new('sha1') can_string = "PUT\n\napplication/octet-stream\n" \ "#{expire_at}\n/#{obj.bucket_name}/#{obj.key}" hmac = OpenSSL::HMAC.digest(digest, secret_access_key, can_string) signature = URI.encode_www_form( Base64.encode64(hmac).strip, /[\+=?@$&,\/:;\?]/ ) "#{endpoint}/#{obj.bucket_name}/#{obj.key}?" \ "Signature=#{signature}" \ "&AWSAccessKeyId=#{access_key_id}" \ "&Expires=#{expire_at}" end