module Cloudinary::BaseConfig

Public Instance Methods

load_config_from_env() click to toggle source
# File lib/cloudinary/base_config.rb, line 22
def load_config_from_env
  raise NotImplementedError
end
load_from_url(url) click to toggle source
# File lib/cloudinary/base_config.rb, line 3
def load_from_url(url)
  return unless url && !url.empty?

  parsed_url = URI.parse(url)
  scheme = parsed_url.scheme.to_s.downcase

  if expected_scheme != scheme
    raise(CloudinaryException,
          "Invalid #{env_url} scheme. Expecting to start with '#{expected_scheme}://'")
  end

  update(config_from_parsed_url(parsed_url))
  setup_from_parsed_url(parsed_url)
end
update(new_config = {}) click to toggle source
# File lib/cloudinary/base_config.rb, line 18
def update(new_config = {})
  new_config.each{ |k,v| public_send(:"#{k}=", v) unless v.nil?}
end

Private Instance Methods

config_from_parsed_url(parsed_url) click to toggle source
# File lib/cloudinary/base_config.rb, line 28
def config_from_parsed_url(parsed_url)
  raise NotImplementedError
end
env_url() click to toggle source
# File lib/cloudinary/base_config.rb, line 32
def env_url
  raise NotImplementedError
end
expected_scheme() click to toggle source
# File lib/cloudinary/base_config.rb, line 36
def expected_scheme
  raise NotImplementedError
end
is_nested_key?(key) click to toggle source
# File lib/cloudinary/base_config.rb, line 55
def is_nested_key?(key)
  /\w+\[\w+\]/ =~ key
end
put_nested_key(key, value) click to toggle source
# File lib/cloudinary/base_config.rb, line 40
def put_nested_key(key, value)
  chain   = key.split(/[\[\]]+/).reject(&:empty?)
  outer   = self
  lastKey = chain.pop
  chain.each do |innerKey|
    inner = outer[innerKey]
    if inner.nil?
      inner           = OpenStruct.new
      outer[innerKey] = inner
    end
    outer = inner
  end
  outer[lastKey] = value
end
setup_from_parsed_url(parsed_url) click to toggle source
# File lib/cloudinary/base_config.rb, line 59
def setup_from_parsed_url(parsed_url)
  parsed_url.query.to_s.split("&").each do |param|
    key, value = param.split("=")
    if is_nested_key? key
      put_nested_key key, value
    else
      update(key => Utils.smart_unescape(value))
    end
  end
end