lib/itsf/services/v2/service/base.rb in itsf_services-0.0.3 vs lib/itsf/services/v2/service/base.rb in itsf_services-0.1.0
- old
+ new
@@ -6,13 +6,17 @@
module Service
class Base
include ActiveModel::Validations
extend Forwardable
+ include ActiveModel::Conversion
+ def persisted?; false end
+
def_delegator :@instrumenter, :instrument
attr_accessor :instrumenter
attr_reader :response
+ attr_reader :_messages
def self.i18n_scope
'activerecord'
end
@@ -22,10 +26,11 @@
def initialize(attributes = {}, *args)
options = args.extract_options!
options.reverse_merge!(instrumenter: ActiveSupport::Notifications)
+ @_messages = []
@errors = ActiveModel::Errors.new(self)
initialize_instrumenter(options[:instrumenter])
instrument('initialize.export_to_sap.payment.dzb') do
initialize_attributes if respond_to?(:initialize_attributes)
@@ -57,27 +62,45 @@
def respond
response
end
def response
+ set_messages_on_response
set_errors_on_response
@response
end
def say(message, options = {})
- options.reverse_merge!(indent: 0)
+ options.reverse_merge!(indent: 0, level: :info)
indent = options.delete(:indent)
- puts "[#{self.class.name}]: #{' ' * indent}#{message}"
+ level = options.delete(:level)
+ formatted_message = "[#{self.class.name}]: #{' ' * indent}#{message}"
+ puts formatted_message
+ @_messages << Services::V2::Message::Base.new(service_class: self.class, message: message, level: level, indent: indent)
true
end
+ def info(message, options = {})
+ options.reverse_merge!(level: :info)
+ say(message, options)
+ end
+
+ def warn(message, options = {})
+ options.reverse_merge!(level: :warning)
+ say(message, options)
+ end
+
def add_error_and_say(attribute, message, options = {})
errors.add(attribute, message)
say(message, options)
end
def set_errors_on_response
@response.send(:'errors=', @errors)
+ end
+
+ def set_messages_on_response
+ @response.send(:'messages=', @_messages)
end
end
end
end
end