rule_engine_client 0.1.6 → 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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rule_engine_client.rb +52 -36
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 662785d935e308ee876e6afdc5cb9d9cce37fb52a0dad42303764b910a6b03d1
4
- data.tar.gz: 7f4f77c3bf3c71c26caa486690745832c0274c6399e6ee015d72305be157020f
3
+ metadata.gz: bbb8d1d41bc3a3349d3833e43067ea0a88d6a86987099df2f2cb44c035b805a8
4
+ data.tar.gz: 4e63551f1046d994e701bc252915ba67b607bc25e0b1ccc0272e7c5baa47e433
5
5
  SHA512:
6
- metadata.gz: 1b15ac7e0d62019dc546ad8acd861c947733daec7aafc3c63abdb15ef588c1c11247e8640fa9dfd0b5462eda8953c1da9fc3ef96f297b57e552a9900bfdb5303
7
- data.tar.gz: 9fc0c71c8e56006c72075d9badfd206df4a1b9461e95e0666816250df208a0b297b2782fab881482e84bfe22a9c7512b04ed22de9b8a48ef56e156f8b7256c82
6
+ metadata.gz: 745d7961b437e8778116261b8d44f5fb464e16adc795d210ce5b96237619c661abf309c2710b4229b33f87491192d740aab74145ac81e6156b8c0ff8df783bb0
7
+ data.tar.gz: 24d66a7ba9655df2a4f37d282e0695ab58f478096b555f7a26352a72a0fd0f065563bedd56d893b7ed9e35e4254143794ade498a1bbfa7bfc61f127a50c718fc
@@ -5,16 +5,53 @@ require 'timeout'
5
5
 
6
6
  # rule engine client class
7
7
  class RuleEngineClient
8
- def initialize(server = 'http://localhost:8088', time_out_duration = 5, verbose = false)
8
+ def initialize(server = 'http://localhost:8088', request_timeout_in_s = 5, verbose = false)
9
9
  @server = server
10
10
  @verbose = verbose
11
- @logger = Logger.new(STDOUT)
12
- @time_out_duration = time_out_duration
11
+ @logger = Logger.new($stdout)
12
+ @request_timeout_in_s = request_timeout_in_s
13
13
  log("rule engine '#{server}' client is initialized")
14
14
  end
15
15
 
16
+ def evaluate(engine, params, mode = 'production')
17
+ url = URI.parse("#{@server}/run?e=#{engine}&m=#{mode}")
18
+ log("Will send post request: #{url}")
19
+ begin
20
+ Timeout.timeout(@request_timeout_in_s) do
21
+ @result = create_request(url, 'post', params)
22
+ respone = response_builder
23
+ log("respone #{respone}")
24
+ respone
25
+ end
26
+ rescue Timeout::Error
27
+ log('HTTP Gatway timeout!')
28
+ @time_out = true
29
+ response_builder
30
+ end
31
+ end
32
+
33
+ def engine_exists?(engine)
34
+ log("checking if engine (#{engine}) exists")
35
+ url = URI.parse("#{@server}/engine/export?e=#{engine}")
36
+ log("Will send get request: #{url}")
37
+ begin
38
+ Timeout.timeout(@request_timeout_in_s) do
39
+ response = create_request(url, 'get')
40
+ engine_exists = response.code == '200'
41
+ log_message = engine_exists ? "engine #{engine} exists" : "engine #{engine} not found"
42
+ log(log_message)
43
+ engine_exists
44
+ end
45
+ rescue Timeout::Error
46
+ log('HTTP Gateway timeout!')
47
+ false
48
+ end
49
+ end
50
+
51
+ private
52
+
16
53
  def log(message)
17
- @logger.debug('debug: ' + message) if @verbose
54
+ @logger.debug("rule engine: #{message}") if @verbose
18
55
  end
19
56
 
20
57
  def valid_json?(obj)
@@ -53,38 +90,17 @@ class RuleEngineClient
53
90
  response_hash(code, body, errors)
54
91
  end
55
92
 
56
- def evaluate(work_space, params, mode = 'production')
57
- url = URI.parse("#{@server}/run?e=#{work_space}&m=#{mode}")
58
- log("Will send post request: #{url}")
59
- req = Net::HTTP::Post.new(url.to_s)
60
- req['Content-Type'] = 'application/json'
61
- req.body = params.to_json
62
- log("request body created #{req.body} ")
63
- begin
64
- status = Timeout.timeout(@time_out_duration) do
65
- @result = Net::HTTP.start(url.host, url.port, use_ssl: true) { |http| http.request(req) }
66
- log('request sent')
67
- log("result: #{@result.code} type #{@result.code.class}")
68
- respone = response_builder
69
- log("respone #{respone}")
70
- respone
71
- end
72
- rescue Timeout::Error
73
- log('HTTP Gatway timeout!')
74
- @time_out = true
75
- response_builder
93
+ def create_request(url, request_type, params = {})
94
+ http = Net::HTTP.new(url.host, url.port)
95
+ http.use_ssl = true if url.instance_of? URI::HTTPS
96
+ if request_type == 'GET'
97
+ request = Net::HTTP::Get.new(url.request_uri)
98
+ else
99
+ request = Net::HTTP::Post.new(url.request_uri)
100
+ request.body = params.to_json
101
+ log("request body created #{request.body} ")
76
102
  end
77
- end
78
-
79
- def work_space_exists?(work_space)
80
- log("checking if work space (#{work_space}) exists")
81
- url = URI.parse("http://#{@server}/engine/export?e=#{work_space}")
82
- req = Net::HTTP::Get.new(url.to_s)
83
- response = Net::HTTP.new(url.host, url.port).start { |http| http.request(req) }
84
- work_space_exists = response.code == 200
85
-
86
- log_message = work_space_exists ? "work space #{work_space} exists" : "work space #{work_space} not found"
87
- log(log_message)
88
- work_space_exists
103
+ request['Content-Type'] = 'application/json'
104
+ http.request(request)
89
105
  end
90
106
  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.6
4
+ version: 0.1.9
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-09 00:00:00.000000000 Z
11
+ date: 2022-08-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: integration with rule server
14
14
  email: