Method: ObjectsFramework::ObjectHandler.run_methods

Defined in:
lib/objectsframework/object_handler.rb

.run_methods(request, response, context) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
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
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/objectsframework/object_handler.rb', line 9

def self.run_methods(request,response,context)
  path = request.path
  parts = path.split("/")
  if(path == "/" && !context.config[:root].nil?)
    klass = Object.const_get(context.config[:root]).new
    klass.set_instance_variables(request,response,context.env)

    captured_result = captured?(klass)
    if(captured_result != 0)
      return captured_result
    end

    Hooks.fire("object.before_execute", klass)

    klass.send(request.request_method.downcase!+"_"+context.config[:index_method])
    return true
  end

  begin
    klass = Object.const_get(parts[1].capitalize).new.set_instance_variables(request,response,context.env)

    captured_result = captured?(klass)
    if(captured_result != 0)
      return captured_result
    end

    Hooks.fire("object.before_execute", klass)

    if(parts[3].nil?)
      if(path[path.length-1] == "/" || parts.length == 2)
        klass.send(request.request_method.downcase!+"_index");
      else
        klass.send(request.request_method.downcase!+"_"+parts[2])
      end
    else
      klass.send(request.request_method.downcase!+"_"+parts[2],*parts[3..parts.length])
    end
  rescue Exception => e
    begin
      obj = Object.const_get(context.config[:root]).new.set_instance_variables(request,response,context.env)

      captured_result = captured?(obj)
      if(captured_result != 0)
        return captured_result
      end

      Hooks.fire("object.before_execute", obj)
      obj.send(request.request_method.downcase!+"_"+parts[1])
      return true
    rescue

    end
    response.status =  404
    notfound_response(response,e)
  end
  return true
end