Class: Dao::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/dao/api/context.rb

Constant Summary collapse

Attrs =
%w(
  api path route endpoint
  params validator errors status form
  result
  data
  args
)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api, path, route, endpoint, params, *args) ⇒ Context

Returns a new instance of Context.



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/dao/api/context.rb', line 22

def initialize(api, path, route, endpoint, params, *args)
  @api = api
  @path = path
  @route = route
  @endpoint = endpoint

  @params = Params.new
  @params.update(params)
  @params.path = @path
  @params.route = @route
  @form = @params.form

  @validator = Validator.new(@params)
  @validator.validations_search_path.unshift(@api.class)

  @validations = @validator.validations

  @params.validator = @validator
  @errors = @validator.errors
  @status = @validator.status

  @result = Result.new
  @result.path = @path
  @result.route = @route
  @result.status = @status
  @result.mode = @api.mode
  @result.params = @params
  @result.errors = @params.errors

  @data = @result.data

  @args = @endpoint.arity < 1 ? [@params, @result] : [@params, @result].slice(0, @endpoint.arity)
end

Class Method Details

.attrsObject



14
15
16
# File 'lib/dao/api/context.rb', line 14

def Context.attrs
  Attrs
end

.for(*args, &block) ⇒ Object



18
19
20
# File 'lib/dao/api/context.rb', line 18

def Context.for(*args, &block)
  new(*args, &block)
end

Instance Method Details

#callObject



56
57
58
# File 'lib/dao/api/context.rb', line 56

def call
  @api.instance_exec(*@args, &@endpoint)
end