Class: Rsodx::Service

Inherits:
Object
  • Object
show all
Extended by:
Delegate
Includes:
Interactor
Defined in:
lib/rsodx/service.rb

Direct Known Subclasses

Action, Controller, Presenter, Serializer

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Delegate

delegate

Class Attribute Details

.contract_classObject

Returns the value of attribute contract_class.



12
13
14
# File 'lib/rsodx/service.rb', line 12

def contract_class
  @contract_class
end

Class Method Details

.contract(&block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/rsodx/service.rb', line 14

def contract(&block)
  before do
    self.class.contract_class ||= Class.new(Rsodx::Contract, &block)
    contract = self.class.contract_class.new.call(context.params.to_h)

    if contract.failure?
      halt(400, contract.errors.to_h)
    end
  end
end

Instance Method Details

#halt(code, message) ⇒ Object



26
27
28
29
30
# File 'lib/rsodx/service.rb', line 26

def halt(code, message)
  log_error(code, message)
  context.fail!(error_code: code, error: message)
  Rsodx.config.logger&.error(code, message, context)
end

#loggerObject



32
33
34
# File 'lib/rsodx/service.rb', line 32

def logger
  Rsodx.config.logger
end