Class: Uploadcare::Internal::SignatureGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/uploadcare/internal/signature_generator.rb

Overview

Generates HMAC-SHA256 signatures for signed uploads.

Used when config.sign_uploads is enabled to generate authentication signatures for Upload API requests.

Examples:

Uploadcare::Internal::SignatureGenerator.call(config: config)
# => { signature: "abc123...", expire: 1234567890 }

Class Method Summary collapse

Class Method Details

.call(config: Uploadcare.configuration) ⇒ Hash

Generate signature params for signed uploads.

Parameters:

Returns:

  • (Hash)

    Hash with :signature and :expire keys

Raises:

  • (ArgumentError)

    if secret_key is empty or lifetime is invalid



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/uploadcare/internal/signature_generator.rb', line 19

def self.call(config: Uploadcare.configuration)
  secret_key = config.secret_key.to_s
  lifetime = config.upload_signature_lifetime
  raise ArgumentError, 'secret_key is required for upload signature' if secret_key.empty?
  unless lifetime.is_a?(Integer) && lifetime.positive?
    raise ArgumentError, 'upload_signature_lifetime must be a positive Integer'
  end

  expires_at = Time.now.to_i + lifetime
  signature = OpenSSL::HMAC.hexdigest('sha256', secret_key, expires_at.to_s)
  { signature: signature, expire: expires_at }
end