kns_endpoint 0.1.8 → 0.1.9

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.
Files changed (2) hide show
  1. data/lib/kns_endpoint.rb +82 -62
  2. metadata +4 -4
data/lib/kns_endpoint.rb CHANGED
@@ -5,99 +5,106 @@ require 'logger'
5
5
  module Kynetx
6
6
 
7
7
  class Endpoint
8
- attr_accessor :session, :environment, :ruleset, :use_session, :headers, :logging, :log
9
8
 
10
- @@events = {}
11
- @@directives = {}
12
- @@use_session = true;
13
- @@environment = :production
14
- @@ruleset = nil
15
9
  RestClient.log = Logger.new(STDOUT) if $KNS_ENDPOINT_DEBUG
16
10
 
11
+ # DSL
12
+ class << self
13
+ attr_reader :events, :directives
14
+ attr_reader :c_ruleset, :c_domain, :c_use_session, :c_environment
15
+
16
+ def event(e, params={}, &block)
17
+ @events ||= {}
18
+ @events[e] = { :params => params }
19
+ @events[e][:block] = block_given? ? block : lambda { |p| p }
20
+ end
21
+
22
+ def directive(d, &block)
23
+ @directives ||= {}
24
+ @directives[d] = block_given? ? block : lambda { |p| p }
25
+ end
26
+
27
+ def use_session(u); @c_use_session = u end
28
+ def environment(e); @c_environment = e end
29
+ def ruleset(r); @c_ruleset = r end
30
+ def domain(d); @c_domain = d end
31
+
32
+ def signal(e, params)
33
+ tmp_endpoint = self.new
34
+ tmp_endpoint.signal(e, params)
35
+ end
36
+
37
+ def method_missing(meth, *args)
38
+ if @events.include? meth.to_sym
39
+ ruleset = @ruleset
40
+ if args.first.class == Symbol
41
+ ruleset = args.first
42
+ params = args.length > 1 ? args.last : {}
43
+ else
44
+ params = args.first
45
+ end
46
+ e = self.new({:ruleset => ruleset})
47
+ e.signal(meth.to_sym, params)
48
+ else
49
+ super
50
+ end
51
+ end
52
+
53
+
54
+ end
55
+
56
+ attr_accessor :session, :environment, :ruleset, :use_session, :headers, :logging, :query_timeout
57
+ attr_reader :log
58
+
17
59
  def initialize(opts={})
18
60
  @environment = opts[:environment] if opts[:environment]
19
61
  @ruleset = opts[:ruleset] if opts[:ruleset]
20
62
  @use_session = opts[:use_session] if opts[:use_session]
21
63
  @query_timeout = opts[:query_timeout] if opts[:query_timeout]
22
64
  @logging = opts[:logging] if opts[:logging]
23
-
24
- # set the defaults
25
- @events = @@events
26
- @directives = @@directives
27
- @domain = @@domain
28
- @environment ||= @@environment
29
- @use_session ||= @@use_session
30
- @ruleset ||= @@ruleset
65
+ @headers = opts[:headers] if opts[:headers]
66
+
67
+ @events = self.class.events
68
+ @directives = self.class.directives
69
+ @ruleset ||= self.class.c_ruleset
70
+ @domain = self.class.c_domain
71
+ @environment ||= self.class.c_environment || :production
72
+ @use_session ||= self.class.c_use_session || true
73
+
74
+ # instance level settings
31
75
  @query_timeout ||= 120
32
76
  @headers ||= {}
33
77
  @logging ||= false
34
78
  @log = []
79
+ @params = {}
80
+ raise "No events defined" unless @events
81
+ raise "No directives defined" unless @directives
35
82
  raise "Undefined ruleset." unless @ruleset
36
- raise "Undefined Domain" unless @domain
37
- end
38
-
39
- ## Endpoint DSL
40
-
41
- def self.event(e, params={}, &block)
42
- @@events[e] = { :params => params }
43
- @@events[e][:block] = block_given? ? block : lambda { |p| p }
44
- end
45
-
46
- def self.directive(d, &block)
47
- raise "Directive must supply a block." unless block_given?
48
- @@directives[d] = block
83
+ raise "Undefined domain." unless @domain
49
84
  end
50
85
 
51
- def self.ruleset(r); @@ruleset = r end
52
- def self.domain(d); @@domain = d end
53
- def self.environment(e); @@environment = e end
54
- def self.use_session(s); @@use_session = s end
55
-
56
- ##########
57
-
58
86
  def signal(e, params={})
59
87
  run_event(e, params)
60
88
  end
61
89
 
62
- def self.signal(e, params)
63
- tmp_endpoint = self.new({:ruleset => @@ruleset, :environment => @@environment})
64
- tmp_endpoint.signal(e, params)
90
+ def params
91
+ @params ||= {}
65
92
  end
66
93
 
67
94
  # allow calling events directly
68
95
  def method_missing(meth, *args)
69
- if @@events.keys.include? meth.to_sym
96
+ if @events.keys.include? meth.to_sym
70
97
  return run_event(meth.to_sym, args.first)
71
98
  else
72
99
  super
73
100
  end
74
101
  end
75
102
 
76
- def self.method_missing(meth, *args)
77
- if @@events.include? meth.to_sym
78
- ruleset = @@ruleset
79
- if args.first.class == Symbol
80
- ruleset = args.first
81
- params = args.length > 1 ? args.last : {}
82
- else
83
- params = args.first
84
- end
85
- e = self.new({:ruleset => ruleset})
86
- e.signal(meth.to_sym, params)
87
- else
88
- super
89
- end
90
- end
91
-
92
103
  private
93
104
 
94
- def run_event(e, params)
105
+ def run_event(e, p)
95
106
  # run the event
96
-
97
- # set the default params as an empty hash
98
-
99
- params ||= {}
100
-
107
+ @params = p
101
108
  kns_json = {"directives" => []}
102
109
 
103
110
  begin
@@ -105,6 +112,10 @@ module Kynetx
105
112
 
106
113
  if @events.keys.include? e
107
114
  @events[e][:block].call(params)
115
+
116
+ if self.methods.include? "before_#{e}"
117
+ send "before_#{e}".to_sym
118
+ end
108
119
  else
109
120
  raise "Undefined event #{e.to_s}"
110
121
  end
@@ -169,8 +180,17 @@ module Kynetx
169
180
  # execute the returned directives
170
181
  directive_output = []
171
182
  kns_json["directives"].each do |d|
172
- o = run_directive(d["name"].to_sym, d["options"]) if @directives.keys.include?(d["name"].to_sym)
173
- directive_output.push o
183
+ directive = d["name"].to_sym
184
+ d_opts = d["options"]
185
+ if @directives.keys.include?(directive)
186
+ o = run_directive(directive, d_opts)
187
+ directive_output.push o
188
+
189
+ if self.methods.include? "after_#{directive}"
190
+ send "after_#{directive}".to_sym, d_opts
191
+ end
192
+
193
+ end
174
194
  end
175
195
 
176
196
  return directive_output
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kns_endpoint
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 8
10
- version: 0.1.8
9
+ - 9
10
+ version: 0.1.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Farmer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-22 00:00:00 -07:00
18
+ date: 2010-12-23 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency