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.



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

def contract_class
  @contract_class
end

Class Method Details

.contract(&block) ⇒ Object



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

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



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

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