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.



21
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
# File 'lib/dao/api/context.rb', line 21

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.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



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

def Context.attrs
  Attrs
end

.for(*args, &block) ⇒ Object



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

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

Instance Method Details

#callObject



54
55
56
# File 'lib/dao/api/context.rb', line 54

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