kns_endpoint 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/kns_endpoint.rb +82 -62
- 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
|
-
|
25
|
-
@events =
|
26
|
-
@directives =
|
27
|
-
@
|
28
|
-
@
|
29
|
-
@
|
30
|
-
@
|
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
|
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
|
63
|
-
|
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
|
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,
|
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
|
-
|
173
|
-
|
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:
|
4
|
+
hash: 9
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
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-
|
18
|
+
date: 2010-12-23 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|