Module: GitLfsS3::CephPresignerService
- Extended by:
- AwsHelpers
- Defined in:
- lib/git-lfs-s3/services/ceph_presigner.rb
Class Method Summary collapse
Methods included from AwsHelpers
aws_access_key_id, aws_region, aws_secret_access_key, bucket, bucket_name, object_data, s3
Class Method Details
.signed_url(obj) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# 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 |