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.
- 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
|