Class: NiftyServices::BaseService

Inherits:
Object
  • Object
show all
Defined in:
lib/nifty_services/base_service.rb,
lib/nifty_services/extensions/callbacks.rb

Direct Known Subclasses

BaseActionService, BaseCrudService

Constant Summary collapse

CALLBACKS =
[
  :before_execute_service_action,
  :after_execute_service_action,
  :before_delete_record,
  :after_delete_record,
  :before_update_record,
  :after_update_record,
  :before_build_record,
  :after_build_record,
  :before_initialize,
  :after_initialize,
  :before_execute,
  :after_execute,
  :before_success,
  :after_success,
  :before_error,
  :after_error,
  :before_create,
  :after_create,
  :before_update,
  :after_update,
  :before_delete,
  :after_delete,
  :before_action,
  :after_action
].freeze
@@registered_callbacks =
Hash.new {|k,v| k[v] = Hash.new }

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, initial_response_status = 400) ⇒ BaseService

Returns a new instance of BaseService.



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/nifty_services/base_service.rb', line 35

def initialize(options = {}, initial_response_status = 400)
  @options = with_default_options(options)
  @errors = []
  @logger = @options[:logger] || default_logger

  @executed = false

  with_before_and_after_callbacks(:initialize) do
    set_response_status(initial_response_status)
  end
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



8
9
10
# File 'lib/nifty_services/base_service.rb', line 8

def errors
  @errors
end

#loggerObject (readonly) Also known as: log

Returns the value of attribute logger.



8
9
10
# File 'lib/nifty_services/base_service.rb', line 8

def logger
  @logger
end

#optionsObject (readonly)

Returns the value of attribute options.



8
9
10
# File 'lib/nifty_services/base_service.rb', line 8

def options
  @options
end

#response_statusObject (readonly)

Returns the value of attribute response_status.



7
8
9
# File 'lib/nifty_services/base_service.rb', line 7

def response_status
  @response_status
end

#response_status_codeObject (readonly)

Returns the value of attribute response_status_code.



7
8
9
# File 'lib/nifty_services/base_service.rb', line 7

def response_status_code
  @response_status_code
end

Class Method Details

.concern(concern_module) ⇒ Object Also known as: include_concern



28
29
30
# File 'lib/nifty_services/base_service.rb', line 28

def concern(concern_module)
  self.include(concern_module)
end

.define_error_response_method(reason_string, status_code) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/nifty_services/base_service.rb', line 16

def define_error_response_method(reason_string, status_code)
  method_name = Util.normalized_callback_name(reason_string, '_error')

  define_method method_name do |message_key, options = {}|
    error(status_code, message_key, options)
  end

  define_method "#{method_name}!" do |message_key, options = {}|
    error!(status_code, message_key, options)
  end
end

.register_callback(callback_name, method_name, &block) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/nifty_services/extensions/callbacks.rb', line 34

def register_callback(callback_name, method_name, &block)
  method_name = Util.normalized_callback_name(method_name)

  @@registered_callbacks[self.name.to_sym][callback_name] ||= []
  @@registered_callbacks[self.name.to_sym][callback_name] << method_name

  register_callback_action(method_name, &block)
end

.register_callback_action(callback_name, &block) ⇒ Object



43
44
45
# File 'lib/nifty_services/extensions/callbacks.rb', line 43

def register_callback_action(callback_name, &block)
  define_method(callback_name, &block)
end

.register_error_response_method(reason_string, status_code) ⇒ Object



11
12
13
14
# File 'lib/nifty_services/base_service.rb', line 11

def register_error_response_method(reason_string, status_code)
  NiftyServices::Configuration.add_response_error_method(reason_string, status_code)
  define_error_response_method(reason_string, status_code)
end

Instance Method Details

#add_error(error) ⇒ Object



79
80
81
82
# File 'lib/nifty_services/base_service.rb', line 79

def add_error(error)
  add_method = error.is_a?(Array) ? :concat : :push
  @errors.send(add_method, error)
end

#callback_fired?(callback_name) ⇒ Boolean Also known as: callback_called?

Returns:

  • (Boolean)


59
60
61
62
63
64
65
# File 'lib/nifty_services/extensions/callbacks.rb', line 59

def callback_fired?(callback_name)
  return (
          callback_fired_in?(@fired_callbacks, callback_name) ||
          callback_fired_in?(@custom_fired_callbacks, callback_name) ||
          callback_fired_in?(@custom_fired_callbacks, "#{callback_name}_callback")
         )
end

#default_loggerObject



84
85
86
# File 'lib/nifty_services/base_service.rb', line 84

def default_logger
  NiftyServices.config.logger
end

#executeObject



47
48
49
# File 'lib/nifty_services/base_service.rb', line 47

def execute
  not_implemented_exception(__method__)
end

#executed?Boolean Also known as: runned?

Returns:

  • (Boolean)


90
91
92
# File 'lib/nifty_services/base_service.rb', line 90

def executed?
  @executed == true
end

#fail?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/nifty_services/base_service.rb', line 59

def fail?
  !success?
end

#option_disabled?(key) ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/nifty_services/base_service.rb', line 75

def option_disabled?(key)
  !option_enabled?(key)
end

#option_enabled?(key) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/nifty_services/base_service.rb', line 71

def option_enabled?(key)
  option_exists?(key) && [true, 'true'].member?(@options[key.to_sym])
end

#option_exists?(key) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/nifty_services/base_service.rb', line 67

def option_exists?(key)
  @options && @options.key?(key.to_sym)
end

#register_callback(callback_name, method_name, &block) ⇒ Object



69
70
71
72
73
74
# File 'lib/nifty_services/extensions/callbacks.rb', line 69

def register_callback(callback_name, method_name, &block)
  method_name = normalized_callback_name(method_name).to_sym

  @registered_callbacks[callback_name.to_sym] << method_name
  register_callback_action(callback_name, &block)
end

#register_callback_action(callback_name, &block) ⇒ Object



76
77
78
79
# File 'lib/nifty_services/extensions/callbacks.rb', line 76

def register_callback_action(callback_name, &block)
  cb_name = normalized_callback_name(callback_name).to_sym
  @callbacks_actions[cb_name.to_sym] = block
end

#success?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/nifty_services/base_service.rb', line 55

def success?
  @success == true && valid?
end

#valid?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/nifty_services/base_service.rb', line 51

def valid?
  return @errors.empty?
end