lib/cistern/service.rb in cistern-2.0.5 vs lib/cistern/service.rb in cistern-2.1.0
- old
+ new
@@ -1,188 +1,9 @@
class Cistern::Service
-
- def self.mock!; @mocking = true; end
- def self.mocking?; @mocking; end
- def self.unmock!; @mocking = false; end
-
- module Collections
- def collections
- service.collections
- end
-
- def requests
- service.requests
- end
- end
-
- class << self
- def inherited(klass)
- klass.class_eval <<-EOS, __FILE__, __LINE__
- module Collections
- include Cistern::Service::Collections
-
- def service
- #{klass.name}
- end
- end
-
- def self.service
- #{klass.name}
- end
-
- class Real
- def initialize(options={})
- end
- end
-
- class Mock
- def initialize(options={})
- end
- end
-
- class Model
- include Cistern::Model
-
- def self.inherited(klass)
- service.models << klass
- end
-
- def self.service
- #{klass.name}
- end
- end
-
- class Collection
- include Cistern::Collection
-
- def self.inherited(klass)
- klass.send(:extend, Cistern::Attributes::ClassMethods)
- klass.send(:extend, Cistern::Collection::ClassMethods)
- klass.send(:include, Cistern::Attributes::InstanceMethods)
-
- service.collections << klass
- end
-
- def self.service
- #{klass.name}
- end
- end
-
- class Request
- include Cistern::Request
-
- def self.inherited(klass)
- klass.extend(Cistern::Request::ClassMethods)
-
- service.requests << klass
- end
-
- def self.service
- #{klass.name}
- end
-
- def _mock(*args)
- mock(*args)
- end
-
- def _real(*args)
- real(*args)
- end
- end
- EOS
-
- klass.send(:const_set, :Timeout, Class.new(Cistern::Error))
-
- klass::Mock.send(:include, klass::Collections)
- klass::Mock.send(:extend, Cistern::WaitFor)
- klass::Mock.timeout_error = klass::Timeout
-
- klass::Mock.send(:extend, Cistern::Data)
-
- klass::Real.send(:include, klass::Collections)
- klass::Real.send(:extend, Cistern::WaitFor)
- klass::Real.timeout_error = klass::Timeout
- end
-
- def collections
- @collections ||= []
- end
-
- def models
- @_models ||= []
- end
-
- def recognized_arguments
- @_recognized_arguments ||= []
- end
-
- def required_arguments
- @_required_arguments ||= []
- end
-
- def requests
- @_requests ||= []
- end
-
- def requires(*args)
- self.required_arguments.concat(args)
- end
-
- def recognizes(*args)
- self.recognized_arguments.concat(args)
- end
-
- def validate_options(options={})
- required_options = Cistern::Hash.slice(options, *required_arguments)
-
- missing_required_options = required_arguments - required_options.keys
-
- unless missing_required_options.empty?
- raise "Missing required options: #{missing_required_options.inspect}"
- end
-
- unrecognized_options = options.keys - (required_arguments + recognized_arguments)
-
- unless unrecognized_options.empty?
- raise "Unrecognized options: #{unrecognized_options.inspect}"
- end
- end
-
- def setup
- return true if @_setup
-
- requests.each do |klass|
- name = klass.service_method ||
- Cistern::String.camelize(Cistern::String.demodulize(klass.name))
-
- Cistern::Request.service_request(self, klass, name)
- end
-
- collections.each do |klass|
- name = klass.service_method ||
- Cistern::String.underscore(klass.name.gsub("#{self.name}::", "").gsub("::", ""))
-
- Cistern::Collection.service_collection(self, klass, name)
- end
-
- models.each do |klass|
- name = klass.service_method ||
- Cistern::String.underscore(klass.name.gsub("#{self.name}::", "").gsub("::", ""))
-
- Cistern::Model.service_model(self, klass, name)
- end
-
- @_setup = true
- end
-
- def new(options={})
- setup
- validate_options(options)
-
- self.const_get(self.mocking? ? :Mock : :Real).new(options)
- end
-
- def reset!
- self.const_get(:Mock).reset!
- end
+ def self.inherited(klass)
+ Cistern.deprecation(
+ %q{subclassing Cistern::Service is deprecated. Please use `include Cistern::Client`},
+ caller[0],
+ )
+ klass.send(:include, Cistern::Client)
end
end