objectsframework 1.1.1 → 1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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