Parent

Class/Module Index [+]

Quicksearch

Fog::Service

Public Class Methods

coerce_options(options) click to toggle source
# File lib/fog/core/service.rb, line 129
def coerce_options(options)
  options.each do |key, value|
    value_string = value.to_s.downcase
    if value.nil?
      options.delete(key)
    elsif value == value_string.to_i.to_s
      options[key] = value.to_i
    else
      options[key] = case value_string
      when 'false'
        false
      when 'true'
        true
      else
        value
      end
    end
  end
end
collection(new_collection) click to toggle source
# File lib/fog/core/service.rb, line 121
def collection(new_collection)
  collections << new_collection
end
collections() click to toggle source
# File lib/fog/core/service.rb, line 125
def collections
  @collections ||= []
end
fetch_credentials(options) click to toggle source
# File lib/fog/core/service.rb, line 72
def fetch_credentials(options)
  # attempt to load credentials from config file
  begin
    Fog.credentials.reject {|key, value| !(recognized | requirements).include?(key)}
  rescue LoadError
    # if there are no configured credentials, do nothing
    {}
  end
end
inherited(child) click to toggle source
# File lib/fog/core/service.rb, line 36
def inherited(child)
  child.class_eval           class Error < Fog::Service::Error; end          class NotFound < Fog::Service::NotFound; end          module Collections            include Fog::Service::Collections            def service              #{child}            end          end          def self.service            #{child}          end, __FILE__, __LINE__
end
mocked_requests() click to toggle source
# File lib/fog/core/service.rb, line 149
def mocked_requests
  @mocked_requests ||= []
end
model(new_model) click to toggle source
# File lib/fog/core/service.rb, line 153
def model(new_model)
  models << new_model
end
model_path(new_path) click to toggle source
# File lib/fog/core/service.rb, line 117
def model_path(new_path)
  @model_path = new_path
end
models() click to toggle source
# File lib/fog/core/service.rb, line 157
def models
  @models ||= []
end
new(options={}) click to toggle source
# File lib/fog/core/service.rb, line 55
def new(options={})
  options = Fog.symbolize_credentials(options)
  options = fetch_credentials(options).merge(options)
  validate_options(options)
  coerce_options(options)
  setup_requirements

  if Fog.mocking?
    service::Mock.send(:include, service::Collections)
    service::Mock.new(options)
  else
    service::Real.send(:include, service::Collections)
    service::Real.send(:include, service::NoLeakInspector)
    service::Real.new(options)
  end
end
recognized() click to toggle source
# File lib/fog/core/service.rb, line 195
def recognized
  @recognized ||= [:connection_options]
end
recognizes(*args) click to toggle source
# File lib/fog/core/service.rb, line 191
def recognizes(*args)
  recognized.concat(args)
end
request(new_request) click to toggle source
# File lib/fog/core/service.rb, line 165
def request(new_request)
  requests << new_request
end
request_path(new_path) click to toggle source
# File lib/fog/core/service.rb, line 161
def request_path(new_path)
  @request_path = new_path
end
requests() click to toggle source
# File lib/fog/core/service.rb, line 169
def requests
  @requests ||= []
end
requirements() click to toggle source
# File lib/fog/core/service.rb, line 187
def requirements
  @requirements ||= []
end
requires(*args) click to toggle source
# File lib/fog/core/service.rb, line 183
def requires(*args)
  requirements.concat(args)
end
secrets(*args) click to toggle source
# File lib/fog/core/service.rb, line 173
def secrets(*args)
  if args.empty?
    @secrets ||= []
  else
    args.inject(secrets) do |secrets, secret|
      secrets << "@#{secret}".to_sym
    end
  end
end
setup_requirements() click to toggle source
# File lib/fog/core/service.rb, line 82
def setup_requirements
  if superclass.respond_to?(:setup_requirements)
    superclass.setup_requirements
  end

  @required ||= false
  unless @required
    for collection in collections
      require [@model_path, collection].join('/')
      constant = collection.to_s.split('_').map {|characters| characters[0...1].upcase << characters[1..-1]}.join('')
      service::Collections.module_eval               def #{collection}(attributes = {})                #{service}::#{constant}.new({:service => self}.merge(attributes))              end, __FILE__, __LINE__
    end
    for model in models
      require [@model_path, model].join('/')
    end
    for request in requests
      require [@request_path, request].join('/')
      if service::Mock.method_defined?(request)
        mocked_requests << request
      else
        service::Mock.module_eval                 def #{request}(*args)                  Fog::Mock.not_implemented                end, __FILE__, __LINE__
      end
    end
    @required = true
  end
end
validate_options(options) click to toggle source
# File lib/fog/core/service.rb, line 199
def validate_options(options)
  keys = []
  for key, value in options
    unless value.nil?
      keys << key
    end
  end
  missing = requirements - keys
  unless missing.empty?
    raise ArgumentError, "Missing required arguments: #{missing.join(', ')}"
  end

  unless recognizes.empty?
    unrecognized = options.keys - requirements - recognized
    unless unrecognized.empty?
      raise ArgumentError, "Unrecognized arguments: #{unrecognized.join(', ')}"
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.