class ImageFlux::Origin
Attributes
domain[R]
scheme[R]
signing_secret[R]
signing_version[R]
Public Class Methods
new(domain:, scheme: 'https', signing_version: '1', signing_secret: nil, **_options)
click to toggle source
# File lib/image_flux/origin.rb, line 11 def initialize(domain:, scheme: 'https', signing_version: '1', signing_secret: nil, **_options) @domain = domain.to_s @scheme = scheme.to_s @signing_version = signing_version @signing_secret = signing_secret end
Public Instance Methods
base_url()
click to toggle source
# File lib/image_flux/origin.rb, line 18 def base_url @base_url ||= URI("#{@scheme}://#{@domain}/") end
image_url(path, options = {})
click to toggle source
# File lib/image_flux/origin.rb, line 22 def image_url(path, options = {}) path = "/#{path}" unless path.start_with?('/') opt = options.is_a?(ImageFlux::Option) ? options : ImageFlux::Option.new(options) path = "#{opt.prefix_path}#{path}" if opt.prefix_path query = opt.to_query url = base_url.dup url.path = query.length.zero? ? path : "/c/#{opt.to_query}#{path}" if @signing_secret signed_opt = ImageFlux::Option.new(options.merge(sig: sign(url.path))) url.path = "/c/#{signed_opt.to_query}#{path}" end url end
sign(path)
click to toggle source
# File lib/image_flux/origin.rb, line 41 def sign(path) digest = OpenSSL::HMAC.digest('sha256', @signing_secret, path) "#{@signing_version}.#{Base64.urlsafe_encode64(digest)}" end