Class: Uploadcare::CnameGenerator

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

Overview

CNAME generator for Uploadcare CDN.

Constant Summary collapse

CNAME_PREFIX_LEN =

CNAME prefix length.

10

Class Method Summary collapse

Class Method Details

.cdn_base_postfix(config: Uploadcare.configuration) ⇒ String

Build CDN base URL with a generated CNAME prefix.

Parameters:

Returns:

  • (String)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/uploadcare/cname_generator.rb', line 19

def cdn_base_postfix(config: Uploadcare.configuration)
  key = [config.cdn_base_postfix, config.public_key]
  cached = @cdn_base_postfix_cache&.[](key)
  return cached if cached

  cache_mutex.synchronize do
    @cdn_base_postfix_cache ||= {}
    @cdn_base_postfix_cache[key] ||= begin
      uri = URI.parse(config.cdn_base_postfix)
      uri.host = "#{generate_cname(public_key: config.public_key)}.#{uri.host}"
      uri.to_s
    rescue URI::InvalidURIError => e
      raise Uploadcare::Exception::ConfigurationError, "Invalid cdn_base_postfix URL: #{e.message}"
    end
  end
end

.generate_cname(public_key: Uploadcare.configuration.public_key) ⇒ String

Generate a CNAME prefix for the current public key.

Parameters:

  • public_key (String) (defaults to: Uploadcare.configuration.public_key)

Returns:

  • (String)


40
41
42
# File 'lib/uploadcare/cname_generator.rb', line 40

def generate_cname(public_key: Uploadcare.configuration.public_key)
  custom_cname(public_key)
end