# 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
# File lib/fog/core/service.rb, line 121 def collection(new_collection) collections << new_collection end
# File lib/fog/core/service.rb, line 125 def collections @collections ||= [] end
# 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
# 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
# File lib/fog/core/service.rb, line 149 def mocked_requests @mocked_requests ||= [] end
# File lib/fog/core/service.rb, line 153 def model(new_model) models << new_model end
# File lib/fog/core/service.rb, line 117 def model_path(new_path) @model_path = new_path end
# File lib/fog/core/service.rb, line 157 def models @models ||= [] end
# 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
# File lib/fog/core/service.rb, line 195 def recognized @recognized ||= [:connection_options] end
# File lib/fog/core/service.rb, line 191 def recognizes(*args) recognized.concat(args) end
# File lib/fog/core/service.rb, line 165 def request(new_request) requests << new_request end
# File lib/fog/core/service.rb, line 161 def request_path(new_path) @request_path = new_path end
# File lib/fog/core/service.rb, line 169 def requests @requests ||= [] end
# File lib/fog/core/service.rb, line 187 def requirements @requirements ||= [] end
# File lib/fog/core/service.rb, line 183 def requires(*args) requirements.concat(args) end
# 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
# 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
# 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
Generated with the Darkfish Rdoc Generator 2.