objectsframework 1.1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a4e21284d2385057aa10d6404c328f47bc775b4e
4
- data.tar.gz: 280ef1b1b53086c7350ab597981e3110c936a806
3
+ metadata.gz: 66c4aab9f98eb5bab5e492fdd128af96701b5fd1
4
+ data.tar.gz: 8703ff842c0f3029f241b54dc6bfabbbc905f6f8
5
5
  SHA512:
6
- metadata.gz: 5a36a2f7b7fe3b7f9e3b5b0249aa1c87c5db152507394b27ae3e35877cd4db2771520e7bb4c0d1499c9570512bdf03d8b0aa5245b5d2fde8dada18754ad974f7
7
- data.tar.gz: 01b2ceb9a6130831b5efb9d0fb08a0503150bebd79dccfc847a7e28c34dcd9b1e6a90097f39055878ea4adf3707242c28f2a1e3f7f076d03fcc8c9a96b4b8ace
6
+ metadata.gz: 9ecfb074f8755e8804f987e00dabc3df1bff641ac92622156a6d9c04a80dcd47381390579762a673469584a1ce158eb04aff8ee1869d08d64d5ac7d1ff0c4cf1
7
+ data.tar.gz: 84a2a4ce630ee03a788e317936a7cdaaeff87eccf5a8f28f45c8cd198783fc2bac312acc82f8e161a68788fde60cb93baa5b7a109599a91d9db15ba0ab4e51d0
@@ -3,3 +3,4 @@ require 'objectsframework/overrides'
3
3
  require 'objectsframework/object'
4
4
  require 'objectsframework/server'
5
5
  require 'objectsframework/object_handler'
6
+ require 'objectsframework/hooks'
@@ -0,0 +1,10 @@
1
+ module ObjectsFramework
2
+ class Hooks
3
+ def self.fire(filter, klass)
4
+ hooks_to_execute = klass.class.get_hooks.select { |hook| hook[:filter] == filter }
5
+ hooks_to_execute.each do |hook|
6
+ klass.send(hook[:method].to_sym)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -12,5 +12,23 @@ module ObjectsFramework
12
12
  def response
13
13
  @response
14
14
  end
15
+
16
+ # Object hooks:
17
+ # Usage: add_hook :filter => "afilter", :method => "yourmethod"
18
+ # Available hooks/filters (some are not implement yet, but planned):
19
+ # * object.before_execute: fired before your request handling method is called
20
+ # * request.finished: fired when the request is finished and the response is about to get served [planned]
21
+ # * server.ready: fired when the server is ready accepting connections [planned]
22
+ # * server.error: fired when an internal error happens (for example method not found) [planned]
23
+ # All hooks are blocking, so they could eventually block the request [Future testing required]
24
+ @@hooks = []
25
+
26
+ def self.get_hooks
27
+ @@hooks
28
+ end
29
+
30
+ def self.add_hook(hook)
31
+ @@hooks << hook
32
+ end
15
33
  end
16
34
  end
@@ -1,5 +1,7 @@
1
1
  module ObjectsFramework
2
2
  class ObjectHandler
3
+ # DEPRACTED: do not override the ObjectHandler class anymore use object hooks
4
+ # This event will never be used again
3
5
  def self.finished(klass,request,response,context)
4
6
  # Nothing
5
7
  end
@@ -9,8 +11,8 @@ module ObjectsFramework
9
11
  parts = path.split("/")
10
12
  if(path == "/" && !context.config[:root].nil?)
11
13
  klass = Object.const_get(context.config[:root]).new
12
- puts "Finishing up"
13
- finished(klass,request,response,context);
14
+
15
+ Hooks.fire("object.before_execute", klass)
14
16
 
15
17
  klass.set_instance_variables(request,response).send(request.request_method.downcase!+"_"+context.config[:index_method])
16
18
  return
@@ -18,8 +20,8 @@ module ObjectsFramework
18
20
 
19
21
  begin
20
22
  klass = Object.const_get(parts[1].capitalize).new.set_instance_variables(request,response)
21
- puts "Finishing up"
22
- finished(klass,request,response,context);
23
+
24
+ Hooks.fire("object.before_execute", klass)
23
25
 
24
26
  if(parts[3].nil?)
25
27
  if(path[path.length-1] == "/" || parts.length == 2)
@@ -28,11 +30,12 @@ module ObjectsFramework
28
30
  klass.send(request.request_method.downcase!+"_"+parts[2])
29
31
  end
30
32
  else
31
- klass.send(request.request_method.downcase!+"_"+parts[2],parts[3..parts.length])
33
+ klass.send(request.request_method.downcase!+"_"+parts[2],*parts[3..parts.length])
32
34
  end
33
35
  rescue Exception => e
34
36
  begin
35
37
  obj = Object.const_get(context.config[:root]).new.set_instance_variables(request,response)
38
+ Hooks.fire("object.before_execute", obj)
36
39
  obj.send(request.request_method.downcase!+"_"+parts[1])
37
40
  return
38
41
  rescue
@@ -17,6 +17,5 @@ module ObjectsFramework
17
17
  ObjectsFramework::ObjectHandler.run_methods(request,response,self);
18
18
  response.finish
19
19
  end
20
-
21
20
  end
22
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: objectsframework
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: '1.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram Vandenbogaerde
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-22 00:00:00.000000000 Z
11
+ date: 2015-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -46,6 +46,7 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - lib/objectsframework.rb
49
+ - lib/objectsframework/hooks.rb
49
50
  - lib/objectsframework/object.rb
50
51
  - lib/objectsframework/object_handler.rb
51
52
  - lib/objectsframework/overrides.rb