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