moesif_rack 1.3.10 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5449e55b2da865cdc2bd4d52eef977b45db5a3e7648ee18f67f93795bf1fcd46
4
- data.tar.gz: 930c9fb3a9181eec3b12d5aea8073c12646f94f77d16638dfa0422107b8000f3
3
+ metadata.gz: 818bfecddcafd4b2b71a662e762cb5468b4bf54c7fc5397fb0812ad4274b82ac
4
+ data.tar.gz: 96385b853df74e5a7ca95d669244fc8e744079fcfd6d109c1c7855663bd61ea8
5
5
  SHA512:
6
- metadata.gz: 13012b377dac7ca5da3dcaf1d50ef97e71f6515df9e7f94e61b39746b4f29b134efcbc87eaafcb8dcd04dd67e0e052d8f0c5e9c77dd6ea20a7d997f50df3feb6
7
- data.tar.gz: d7499b20fa602a2dd1bde29099b5b11755f36421f79c32f59fc1e1aa7f0e1dce7794b7ed1ca703c74ff07f040492b3ecc12f038eb3f52625348b13ae9becb2ec
6
+ metadata.gz: eb421c6472805827b2f7c23442c3047ba36c34172ef9af86d2c1266e3867c5aea201cb1900b9e11c16f6915773273a366d75e2b81a0bd02676f147f432de2988
7
+ data.tar.gz: 557bea2a4a9e8c223bde8d2242d47c23ff69adf591ee2f55101b74f9910e788ec584aaf7b5e61942f485a2aa43bd423b6a4196094586424c217de0ded3fe36b9
data/README.md CHANGED
@@ -22,7 +22,7 @@ gem install moesif_rack
22
22
  and if you have a `Gemfile` in your project, please add this line to
23
23
 
24
24
  ```
25
- gem 'moesif_rack', '~> 1.3.9'
25
+ gem 'moesif_rack', '~> 1.4.0'
26
26
 
27
27
  ```
28
28
 
@@ -373,12 +373,6 @@ This method is a convenient helper that calls the Moesif API lib.
373
373
  For details, visit the [Ruby API Reference](https://www.moesif.com/docs/api?ruby#update-users-in-batch).
374
374
 
375
375
  ```ruby
376
- metadata = JSON.parse('{'\
377
- '"email": "testrubyapi@user.com",'\
378
- '"name": "ruby api user",'\
379
- '"custom": "testdata"'\
380
- '}')
381
-
382
376
  users = []
383
377
 
384
378
  metadata => {
@@ -463,12 +457,6 @@ This method is a convenient helper that calls the Moesif API lib.
463
457
  For details, visit the [Ruby API Reference](https://www.moesif.com/docs/api?ruby#update-companies-in-batch).
464
458
 
465
459
  ```ruby
466
- metadata = JSON.parse('{'\
467
- '"email": "testrubyapi@user.com",'\
468
- '"name": "ruby api user",'\
469
- '"custom": "testdata"'\
470
- '}')
471
-
472
460
  companies = []
473
461
 
474
462
  metadata => {
@@ -118,4 +118,8 @@ class AppConfig
118
118
  return nil
119
119
  end
120
120
  end
121
+
122
+ def calculate_weight(sample_rate)
123
+ return sample_rate == 0 ? 1 : (100 / sample_rate).floor
124
+ end
121
125
  end
@@ -233,6 +233,7 @@ module MoesifRack
233
233
  end
234
234
 
235
235
  if @sampling_percentage > @random_percentage
236
+ event_model.weight = @app_config.calculate_weight(@sampling_percentage)
236
237
  event_api_response = @api_controller.create_event(event_model)
237
238
  event_response_config_etag = event_api_response[:x_moesif_config_etag]
238
239
 
@@ -3,6 +3,7 @@ require 'rack'
3
3
  require 'moesif_api'
4
4
  require 'json'
5
5
  require 'base64'
6
+ require_relative '../../lib/moesif_rack/app_config.rb'
6
7
 
7
8
  module MoesifCaptureOutgoing
8
9
 
@@ -23,6 +24,22 @@ module MoesifCaptureOutgoing
23
24
  @skip_outgoing = options['skip_outgoing']
24
25
  @mask_data_outgoing = options['mask_data_outgoing']
25
26
  @log_body_outgoing = options.fetch('log_body_outgoing', true)
27
+ @app_config = AppConfig.new
28
+ @config = @app_config.get_config(@api_controller, @debug)
29
+ @config_etag = nil
30
+ @sampling_percentage = 100
31
+ @last_updated_time = Time.now.utc
32
+ @config_dict = Hash.new
33
+ begin
34
+ if !@config.nil?
35
+ @config_etag, @sampling_percentage, @last_updated_time = @app_config.parse_configuration(@config, @debug)
36
+ end
37
+ rescue => exception
38
+ if @debug
39
+ puts 'Error while parsing application configuration on initialization'
40
+ puts exception.to_s
41
+ end
42
+ end
26
43
  end
27
44
 
28
45
  def call (url, request, request_time, response, response_time)
@@ -157,11 +174,45 @@ module MoesifCaptureOutgoing
157
174
 
158
175
  # Send Event to Moesif
159
176
  begin
160
- if @debug
161
- puts 'Sending Outgoing Request Data to Moesif'
162
- puts event_model.to_json
177
+ @random_percentage = Random.rand(0.00..100.00)
178
+ begin
179
+ @sampling_percentage = @app_config.get_sampling_percentage(@config, event_model.user_id, event_model.company_id, @debug)
180
+ rescue => exception
181
+ if @debug
182
+ puts 'Error while getting sampling percentage, assuming default behavior'
183
+ puts exception.to_s
184
+ end
185
+ @sampling_percentage = 100
186
+ end
187
+
188
+ if @sampling_percentage > @random_percentage
189
+ event_model.weight = @app_config.calculate_weight(@sampling_percentage)
190
+ if @debug
191
+ puts 'Sending Outgoing Request Data to Moesif'
192
+ puts event_model.to_json
193
+ end
194
+ event_api_response = @api_controller.create_event(event_model)
195
+ event_response_config_etag = event_api_response[:x_moesif_config_etag]
196
+
197
+ if !event_response_config_etag.nil? && !@config_etag.nil? && @config_etag != event_response_config_etag && Time.now.utc > @last_updated_time + 300
198
+ begin
199
+ @config = @app_config.get_config(@api_controller, @debug)
200
+ @config_etag, @sampling_percentage, @last_updated_time = @app_config.parse_configuration(@config, @debug)
201
+ rescue => exception
202
+ if @debug
203
+ puts 'Error while updating the application configuration'
204
+ puts exception.to_s
205
+ end
206
+ end
207
+ end
208
+ if @debug
209
+ puts("Event successfully sent to Moesif")
210
+ end
211
+ else
212
+ if @debug
213
+ puts("Skipped outgoing Event due to sampling percentage: " + @sampling_percentage.to_s + " and random percentage: " + @random_percentage.to_s)
214
+ end
163
215
  end
164
- @api_controller.create_event(event_model)
165
216
  rescue MoesifApi::APIException => e
166
217
  if e.response_code.between?(401, 403)
167
218
  puts "Unathorized accesss sending event to Moesif. Please verify your Application Id."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moesif_rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.10
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moesif, Inc
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-12-16 00:00:00.000000000 Z
12
+ date: 2019-12-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test-unit
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.2.10
34
+ version: 1.2.11
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.2.10
41
+ version: 1.2.11
42
42
  description: Collection/Data Ingestion SDK for Rack (also Rails) Middleware / RoR
43
43
  email: xing@moesif.com
44
44
  executables: []