rule_engine_client 0.1.12 → 0.1.14
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 +4 -4
- data/lib/rule_engine_client.rb +50 -19
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b1a8c9b6eb9a607d635b566a2af02cc2d030a6167fd62b4bb6f85c2ace1bbef
|
4
|
+
data.tar.gz: dc62fc28e9c85659cbb069484f129fdc2577bd285e06b99c6ee23378215e5429
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5630592647ac4066156880b42a6ebe8b75f938a1fdbd02a6fed0f1f84db21363148600e4816ee7736b8ccf8ec1bca561fb268b4a2511b1706ef5f93ad492fa3d
|
7
|
+
data.tar.gz: 63aabb4250fb31f68419211894eaab84f0fc0c28941f66839131c69b4cd95abc4d0fd8550074f3b47b6c0c0d22cd4e1bc10066eced3bca081699fd4c140d5bdc
|
data/lib/rule_engine_client.rb
CHANGED
@@ -2,6 +2,7 @@ require 'net/http'
|
|
2
2
|
require 'json'
|
3
3
|
require 'logger'
|
4
4
|
require 'timeout'
|
5
|
+
require 'digest/md5'
|
5
6
|
|
6
7
|
# rule engine client class
|
7
8
|
class RuleEngineClient
|
@@ -10,6 +11,8 @@ class RuleEngineClient
|
|
10
11
|
@verbose = verbose
|
11
12
|
@logger = Logger.new($stdout)
|
12
13
|
@request_timeout_in_s = request_timeout_in_s
|
14
|
+
@user_name = 'areej'
|
15
|
+
@password = '123456'
|
13
16
|
log("'#{server}' client is initialized")
|
14
17
|
end
|
15
18
|
|
@@ -33,31 +36,22 @@ class RuleEngineClient
|
|
33
36
|
end
|
34
37
|
|
35
38
|
def get_engine_models(engine)
|
36
|
-
log("get engine (#{engine}) models")
|
37
39
|
response = export_engine(engine)
|
38
|
-
models = response['body']['model']
|
39
|
-
|
40
|
+
models = !response['body'].empty? ? response['body']['model'] : {}
|
41
|
+
models_keys = models.keys
|
42
|
+
models_keys.each do |key|
|
43
|
+
get_nested_object(models, models[key]['properties'])
|
44
|
+
end
|
40
45
|
models
|
41
46
|
end
|
42
47
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
if models_keys.include? key
|
49
|
-
props = models[key]['properties'].map do |prop|
|
50
|
-
prop['name']
|
51
|
-
end
|
52
|
-
params[key].keys.each do |el|
|
53
|
-
params[key].delete(el) unless props.include? el
|
54
|
-
end
|
55
|
-
else
|
56
|
-
params.delete(key)
|
48
|
+
def get_nested_object(models, props)
|
49
|
+
props.each do |prop|
|
50
|
+
if prop['typeconcept'] && (prop['typeconcept'].is_a? String)
|
51
|
+
prop['typeconcept'] = models[prop['typeconcept']]
|
52
|
+
prop['typeconcept']['properties'] = get_nested_object(models, prop['typeconcept']['properties'])
|
57
53
|
end
|
58
54
|
end
|
59
|
-
log("filtered params #{params}")
|
60
|
-
params
|
61
55
|
end
|
62
56
|
|
63
57
|
private
|
@@ -115,6 +109,7 @@ class RuleEngineClient
|
|
115
109
|
request.body = params.to_json
|
116
110
|
log("request body created #{request.body} ")
|
117
111
|
end
|
112
|
+
request.basic_auth(@user_name, @password)
|
118
113
|
request['Content-Type'] = 'application/json'
|
119
114
|
request['Accept'] = 'application/json'
|
120
115
|
http.request(request)
|
@@ -129,4 +124,40 @@ class RuleEngineClient
|
|
129
124
|
@result = create_request(url, 'GET')
|
130
125
|
response_builder
|
131
126
|
end
|
127
|
+
|
128
|
+
def params_mapper(params, engine)
|
129
|
+
@models = get_engine_models(engine)
|
130
|
+
@models_keys = @models.keys
|
131
|
+
params_keys = params.keys
|
132
|
+
params_keys.each do |key|
|
133
|
+
if !@models_keys.include? key
|
134
|
+
params.delete(key)
|
135
|
+
else
|
136
|
+
props = @models[key]['properties'].map do |prop|
|
137
|
+
prop['name']
|
138
|
+
end
|
139
|
+
filter_nested_params(params, key, props)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
log("filtered params #{params}")
|
143
|
+
params
|
144
|
+
end
|
145
|
+
|
146
|
+
def filter_nested_params(params, key, props)
|
147
|
+
keys = params[key].keys
|
148
|
+
keys.each do |el|
|
149
|
+
if !props.include? el
|
150
|
+
params[key].delete(el)
|
151
|
+
elsif params[key][el].is_a? Hash
|
152
|
+
nested_el = @models[key]['properties'].find { |obj| obj['name'] == el }
|
153
|
+
if nested_el['datatype'] != 'object'
|
154
|
+
params[key].delete(el)
|
155
|
+
elsif nested_el && !nested_el['typeconcept']['any']
|
156
|
+
el_props = nested_el['typeconcept']['properties']
|
157
|
+
filter_nested_params(params[key], el, el_props) if el_props.length
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
params
|
162
|
+
end
|
132
163
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rule_engine_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Areej Nour
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: integration with rule server
|
14
14
|
email:
|