rule_engine_client 0.1.11 → 0.1.12

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 +41 -7
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f271721147d6d048ea4dc00e130850f2354589013fe401fb9f453cae2d5b49d
4
- data.tar.gz: e7573863417eff88f63d7452441952efaa0a5c3f3820b7067f50885338b6f43a
3
+ metadata.gz: d27373373d63062d4e321ae93cc1fdaf9bc73a40f146abe7aece2cb83f3e2be5
4
+ data.tar.gz: f00cdf230eaafba55cf74e6d0879c689bd4bbdd3e70f106ea8d14361d49f74ce
5
5
  SHA512:
6
- metadata.gz: 654c8a2a7f0e2c0f47a44f2af2c3637441567c5b65c33bea00f4708e075ac3cf520421a2addf917653cd66dc79071e54e95f8d48871a93067107f313b09f4f70
7
- data.tar.gz: 3d302a105c56395255b2bf43e3008aad0f2b7c7457d9a36fd9e2db1f5798355f07deb4b7239ea43f6018c3ffe97c40523ff86ba23637a92eff69ed4793601b1b
6
+ metadata.gz: d2b034aa852ffc8d54b227cd48fd00ddecdb05ede88cc79f41671b1ef39dfe0478d7d5f59f2d24d7a7193d6211109bcea581a577751259c3a0b9237655a979bb
7
+ data.tar.gz: 54e3c4104a48073c822ba807c4e53743f388da0e2496a1534a006d0b0c0682d10cdf99903dd305717f33f319afeafc4a31f1e52c00ed4db4cc5dbe7b6f01f17b
@@ -10,28 +10,56 @@ class RuleEngineClient
10
10
  @verbose = verbose
11
11
  @logger = Logger.new($stdout)
12
12
  @request_timeout_in_s = request_timeout_in_s
13
- log("rule engine '#{server}' client is initialized")
13
+ log("'#{server}' client is initialized")
14
14
  end
15
15
 
16
16
  def evaluate(engine, params, mode = 'production')
17
17
  url = URI.parse("#{@server}/run?e=#{engine}&m=#{mode}")
18
+ log("params #{params}")
19
+ params = params_mapper(params, engine)
18
20
  @result = create_request(url, 'POST', params)
19
- respone = response_builder
20
- log("respone #{respone}")
21
- respone
21
+ response = response_builder
22
+ log("response #{response}")
23
+ response
22
24
  end
23
25
 
24
26
  def engine_exists(engine)
25
27
  log("checking if engine (#{engine}) exists")
26
- url = URI.parse("#{@server}/engine/export?e=#{engine}")
27
- @result = create_request(url, 'GET')
28
- response = response_builder
28
+ response = export_engine(engine)
29
29
  response['body'] = {
30
30
  'exists' => !response['body'].empty?
31
31
  }
32
32
  response
33
33
  end
34
34
 
35
+ def get_engine_models(engine)
36
+ log("get engine (#{engine}) models")
37
+ response = export_engine(engine)
38
+ models = response['body']['model']
39
+ log("models #{models}")
40
+ models
41
+ end
42
+
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)
57
+ end
58
+ end
59
+ log("filtered params #{params}")
60
+ params
61
+ end
62
+
35
63
  private
36
64
 
37
65
  def log(message)
@@ -95,4 +123,10 @@ class RuleEngineClient
95
123
  log('HTTP Gateway timeout!')
96
124
  @time_out = true
97
125
  end
126
+
127
+ def export_engine(engine)
128
+ url = URI.parse("#{@server}/engine/export?e=#{engine}")
129
+ @result = create_request(url, 'GET')
130
+ response_builder
131
+ end
98
132
  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.11
4
+ version: 0.1.12
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-15 00:00:00.000000000 Z
11
+ date: 2022-08-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: integration with rule server
14
14
  email: