class Cloudimage::URI
Attributes
config[R]
params[R]
path[R]
sealed_params[R]
uri[R]
Public Class Methods
new(path, **config)
click to toggle source
# File lib/cloudimage/uri.rb, line 21 def initialize(path, **config) @config = config @params = {} @sealed_params = Set.new @path = transform(path) @uri = build_uri end
Public Instance Methods
to_url(**extra_params)
click to toggle source
# File lib/cloudimage/uri.rb, line 41 def to_url(**extra_params) set_uri_params(**extra_params) secure_url uri.to_s end
Private Instance Methods
api_version()
click to toggle source
# File lib/cloudimage/uri.rb, line 55 def api_version "/#{config[:api_version]}" end
apply_aliases(path)
click to toggle source
# File lib/cloudimage/uri.rb, line 65 def apply_aliases(path) # path and aliases can be frozen aliases = config[:aliases].dup aliases[default_alias] = '' path.dup.tap do |input| aliases.each do |source, target| input.sub!(source, target) end end end
build_uri()
click to toggle source
# File lib/cloudimage/uri.rb, line 86 def build_uri if config[:include_api_version] Addressable::URI.parse(site + api_version + path) else Addressable::URI.parse(site + path) end end
default_alias()
click to toggle source
# File lib/cloudimage/uri.rb, line 78 def default_alias config[:include_api_version] ? "#{site}#{api_version}/" : "#{site}/" end
request_uri()
click to toggle source
# File lib/cloudimage/uri.rb, line 82 def request_uri uri.request_uri.delete_prefix(api_version) end
secure_url()
click to toggle source
# File lib/cloudimage/uri.rb, line 102 def secure_url return uri.to_s if config[:salt].nil? security = Security.new(uri, **config) if config[:sign_urls] security.sign_url(request_uri) else security.seal_url(path, sealed_params) end end
set_uri_params(**extra_params)
click to toggle source
# File lib/cloudimage/uri.rb, line 94 def set_uri_params(**extra_params) seal_params(*extra_params.delete(:seal_params)) url_params = params.merge(**extra_params) return unless url_params.any? uri.query_values = url_params end
site()
click to toggle source
# File lib/cloudimage/uri.rb, line 49 def site return "https://#{config[:cname]}" if config[:cname] "https://#{config[:token]}.cloudimg.io" end
transform(path)
click to toggle source
# File lib/cloudimage/uri.rb, line 59 def transform(path) path .then { |input| input.start_with?('/') ? input : "/#{input}" } .then(&method(:apply_aliases)) end