rule_engine_client 0.1.0 → 0.1.2

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 +67 -0
  3. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0fcc49e9a4788e2fa640dec0140b3dd8177fcaf5dc11dca86020273bcd03c16
4
- data.tar.gz: e15e50391746dd8440cd027187672cfbe00b9156b42f03d6e0592f00645bcb64
3
+ metadata.gz: bc00d1dd954d65fa1e2ab94529ccc14354c0d7229db483e087c197d589ace450
4
+ data.tar.gz: d976a3d74baf10e1c77e0be324cef138e5ef02e22cc0bb453a19d59e82e25c9a
5
5
  SHA512:
6
- metadata.gz: fcfa67473d3052bd2db1e895ff75a0cac8590ac105be55f979ea02162e8055c92ca1825c789058b8b369b3426189748e9bc11984bd2c905f331c9c03d0f83217
7
- data.tar.gz: 00ecd8f636ab4bf7a2377ec688166866c00fca0d03294704b147fec96c2b54d1f3461b3900ea4468c9110a2e386186b3743404a6fa8f3cf51ec22be3842b218b
6
+ metadata.gz: 373cf7ac214b04890bf68d7cddf1a5832f33b8fa43f366b3f7004e3b6045fa43801f40b78ec5bf26f51be54813f1479375e72df405b16978f47b99a0715a2f25
7
+ data.tar.gz: 4842bc1b3047ba1adfcbaf9c50461d7592914ca474649b15830e5cfa379bcb02049f5fbe27aec71b9ec5a77f97f657a53896a002529c6403c8e3b8b6547b2195
@@ -0,0 +1,67 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ # rule engine client class
4
+ class RuleEngineClient
5
+ def initialize(server = 'http://localhost:8088', verbose = false)
6
+ @server = server
7
+ @verbose = verbose
8
+ log("rule engine '#{server}' client is initialized")
9
+ end
10
+
11
+ def log(message)
12
+ puts message if @verbose
13
+ end
14
+
15
+ def valid_json?(obj)
16
+ !!JSON.parse(obj)
17
+ rescue StandardError
18
+ false
19
+ end
20
+
21
+ def response_hash(code, body, errors)
22
+ {
23
+ 'code' => code,
24
+ 'body' => body,
25
+ 'errors' => errors
26
+ }
27
+ end
28
+
29
+ def response_builder
30
+ if !valid_json?(@result.body)
31
+ errors = ['could not parse response body to JSON']
32
+ body = {}
33
+ code = 500
34
+ else
35
+ body = JSON.parse(@result.body)
36
+ errors = body['errors'] || []
37
+ body = body.except('errors', 'status')
38
+ code = @result.code
39
+ end
40
+ response_hash(code, body, errors)
41
+ end
42
+
43
+ def evaluate(engine_name, params = {}, mode ='production')
44
+ url = URI.parse("#{@server}/run?e=#{engine_name}&m=#{mode}")
45
+ log("Will send post request: #{url}")
46
+ req = Net::HTTP::Post.new(url.to_s)
47
+ req.body = JSON.parse(params.to_s) if valid_json?(params)
48
+ log("request body created #{req.body}")
49
+ @result = Net::HTTP.new(url.host, url.port).start { |http| http.request(req) }
50
+ log('request sent')
51
+ respone = response_builder
52
+ log("respone #{respone}")
53
+ respone
54
+ end
55
+
56
+ def engine_exists?(engine_name)
57
+ log("checking if engine (#{engine_name}) exists")
58
+ url = URI.parse("http://#{@server}/engine/export?e=#{engine_name}")
59
+ req = Net::HTTP::Get.new(url.to_s)
60
+ response = Net::HTTP.new(url.host, url.port).start { |http| http.request(req) }
61
+ engine_exists = response.code == 200
62
+
63
+ log_message = engine_exists ? "engine #{engine_name} exists" : "engine #{engine_name} not found"
64
+ log(log_message)
65
+ engine_exists
66
+ end
67
+ 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.0
4
+ version: 0.1.2
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-02 00:00:00.000000000 Z
11
+ date: 2022-08-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: integration with rule server
14
14
  email:
@@ -16,7 +16,8 @@ email:
16
16
  executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
- files: []
19
+ files:
20
+ - lib/rule_engine_client.rb
20
21
  homepage: https://rubygems.org/gems/rule_engine_client
21
22
  licenses:
22
23
  - MIT