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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rule_engine_client.rb +50 -19
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d27373373d63062d4e321ae93cc1fdaf9bc73a40f146abe7aece2cb83f3e2be5
4
- data.tar.gz: f00cdf230eaafba55cf74e6d0879c689bd4bbdd3e70f106ea8d14361d49f74ce
3
+ metadata.gz: 9b1a8c9b6eb9a607d635b566a2af02cc2d030a6167fd62b4bb6f85c2ace1bbef
4
+ data.tar.gz: dc62fc28e9c85659cbb069484f129fdc2577bd285e06b99c6ee23378215e5429
5
5
  SHA512:
6
- metadata.gz: d2b034aa852ffc8d54b227cd48fd00ddecdb05ede88cc79f41671b1ef39dfe0478d7d5f59f2d24d7a7193d6211109bcea581a577751259c3a0b9237655a979bb
7
- data.tar.gz: 54e3c4104a48073c822ba807c4e53743f388da0e2496a1534a006d0b0c0682d10cdf99903dd305717f33f319afeafc4a31f1e52c00ed4db4cc5dbe7b6f01f17b
6
+ metadata.gz: 5630592647ac4066156880b42a6ebe8b75f938a1fdbd02a6fed0f1f84db21363148600e4816ee7736b8ccf8ec1bca561fb268b4a2511b1706ef5f93ad492fa3d
7
+ data.tar.gz: 63aabb4250fb31f68419211894eaab84f0fc0c28941f66839131c69b4cd95abc4d0fd8550074f3b47b6c0c0d22cd4e1bc10066eced3bca081699fd4c140d5bdc
@@ -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
- log("models #{models}")
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 params_mapper(params, engine)
44
- models = get_engine_models(engine)
45
- models_keys = models.keys
46
- params_keys = params.keys
47
- params_keys.each do |key|
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.12
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-18 00:00:00.000000000 Z
11
+ date: 2022-08-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: integration with rule server
14
14
  email: