moesif_rack 1.4.17 → 1.4.18
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.
- checksums.yaml +4 -4
- data/lib/moesif_rack/moesif_middleware.rb +35 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4332e59f946cefea8c61e0e7f40136ba2fd45c4c96de9f133651622c734d62b7
|
4
|
+
data.tar.gz: 5f7e29ac2f016a4c97d56a1276aafd42cabedf316cbe0a5a6f82069dcd813f18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25b4d5ea39d166c3aee2da057460c2fd9027bd4a7d1a1510e45ec0436890de5ea910b28353f00a034f735d99b7d5c840879e537b3022759216218d6cc351a1bf
|
7
|
+
data.tar.gz: d4e0e2014e5b78b1b1ca4be8cc8e10769ebe5d3ed3d6c91f96004587a6e474ac34470af7272da8922ccac5773206a8c44fe4f4d8657bdd90fa3f3fa444f09863
|
@@ -4,6 +4,7 @@ require 'time'
|
|
4
4
|
require 'base64'
|
5
5
|
require 'zlib'
|
6
6
|
require 'stringio'
|
7
|
+
require 'rack'
|
7
8
|
require_relative './client_ip.rb'
|
8
9
|
require_relative './app_config.rb'
|
9
10
|
require_relative './update_user.rb'
|
@@ -100,6 +101,24 @@ module MoesifRack
|
|
100
101
|
end
|
101
102
|
end
|
102
103
|
|
104
|
+
def parse_multipart(multipart_form_data, content_type)
|
105
|
+
@moesif_helpers.log_debug("try to parse multiple part #{content_type}")
|
106
|
+
|
107
|
+
sanitized_multipart_form_data = multipart_form_data.gsub(/\r?\n/, "\r\n")
|
108
|
+
|
109
|
+
io = StringIO.new(sanitized_multipart_form_data)
|
110
|
+
tempfile = Rack::Multipart::Parser::TEMPFILE_FACTORY
|
111
|
+
bufsize = Rack::Multipart::Parser::BUFSIZE
|
112
|
+
query_parser = Rack::Utils.default_query_parser
|
113
|
+
result = Rack::Multipart::Parser.parse(io, sanitized_multipart_form_data.length, content_type, tempfile, bufsize, query_parser)
|
114
|
+
|
115
|
+
@moesif_helpers.log_debug("multipart parse result")
|
116
|
+
@moesif_helpers.log_debug(result.inspect)
|
117
|
+
|
118
|
+
# this is a hash shold be treated as JSON down the road.
|
119
|
+
result.params
|
120
|
+
end
|
121
|
+
|
103
122
|
def parse_body(body, headers)
|
104
123
|
begin
|
105
124
|
if (body.instance_of?(Hash) || body.instance_of?(Array))
|
@@ -108,6 +127,9 @@ module MoesifRack
|
|
108
127
|
elsif start_with_json(body)
|
109
128
|
parsed_body = JSON.parse(body)
|
110
129
|
transfer_encoding = 'json'
|
130
|
+
elsif headers.key?('content-type') && ((headers['content-type'].downcase).include? 'multipart/form-data')
|
131
|
+
parsed_body = parse_multipart(body, headers['content-type'])
|
132
|
+
transfer_encoding = 'json'
|
111
133
|
elsif headers.key?('content-encoding') && ((headers['content-encoding'].downcase).include? "gzip")
|
112
134
|
uncompressed_string = decompress_body(body)
|
113
135
|
parsed_body, transfer_encoding = base64_encode_body(uncompressed_string)
|
@@ -127,20 +149,20 @@ module MoesifRack
|
|
127
149
|
begin
|
128
150
|
until @events_queue.empty? do
|
129
151
|
batch_events = []
|
130
|
-
until batch_events.size == @batch_size || @events_queue.empty? do
|
152
|
+
until batch_events.size == @batch_size || @events_queue.empty? do
|
131
153
|
batch_events << @events_queue.pop
|
132
|
-
end
|
154
|
+
end
|
133
155
|
@moesif_helpers.log_debug("Sending #{batch_events.size.to_s} events to Moesif")
|
134
156
|
event_api_response = @api_controller.create_events_batch(batch_events)
|
135
157
|
@event_response_config_etag = event_api_response[:x_moesif_config_etag]
|
136
158
|
@moesif_helpers.log_debug(event_api_response.to_s)
|
137
159
|
@moesif_helpers.log_debug("Events successfully sent to Moesif")
|
138
160
|
end
|
139
|
-
|
161
|
+
|
140
162
|
if @events_queue.empty?
|
141
163
|
@moesif_helpers.log_debug("No events to read from the queue")
|
142
164
|
end
|
143
|
-
|
165
|
+
|
144
166
|
sleep @batch_max_time
|
145
167
|
rescue MoesifApi::APIException => e
|
146
168
|
if e.response_code.between?(401, 403)
|
@@ -177,6 +199,8 @@ module MoesifRack
|
|
177
199
|
req_headers[new_key] = val
|
178
200
|
end
|
179
201
|
|
202
|
+
# rewind first in case someone else already read the body
|
203
|
+
req.body.rewind
|
180
204
|
req_body_string = req.body.read
|
181
205
|
req.body.rewind
|
182
206
|
req_body_transfer_encoding = nil
|
@@ -229,12 +253,12 @@ module MoesifRack
|
|
229
253
|
end
|
230
254
|
|
231
255
|
# Add Transaction Id to the Response Header
|
232
|
-
if !transaction_id.nil?
|
256
|
+
if !transaction_id.nil?
|
233
257
|
rsp_headers["X-Moesif-Transaction-Id"] = transaction_id
|
234
258
|
end
|
235
259
|
|
236
260
|
# Add Transaction Id to the Repsonse Header sent to the client
|
237
|
-
if !transaction_id.nil?
|
261
|
+
if !transaction_id.nil?
|
238
262
|
headers["X-Moesif-Transaction-Id"] = transaction_id
|
239
263
|
end
|
240
264
|
|
@@ -254,7 +278,7 @@ module MoesifRack
|
|
254
278
|
event_model.request = event_req
|
255
279
|
event_model.response = event_rsp
|
256
280
|
event_model.direction = "Incoming"
|
257
|
-
|
281
|
+
|
258
282
|
if @identify_user
|
259
283
|
@moesif_helpers.log_debug "calling identify user proc"
|
260
284
|
event_model.user_id = @identify_user.call(env, headers, body)
|
@@ -285,7 +309,7 @@ module MoesifRack
|
|
285
309
|
begin
|
286
310
|
random_percentage = Random.rand(0.00..100.00)
|
287
311
|
|
288
|
-
begin
|
312
|
+
begin
|
289
313
|
sampling_percentage = @app_config.get_sampling_percentage(event_model, @config, event_model.user_id, event_model.company_id)
|
290
314
|
@moesif_helpers.log_debug "Using sample rate #{sampling_percentage}"
|
291
315
|
rescue => exception
|
@@ -294,7 +318,7 @@ module MoesifRack
|
|
294
318
|
sampling_percentage = 100
|
295
319
|
end
|
296
320
|
|
297
|
-
if sampling_percentage > random_percentage
|
321
|
+
if sampling_percentage > random_percentage
|
298
322
|
event_model.weight = @app_config.calculate_weight(sampling_percentage)
|
299
323
|
# Add Event to the queue
|
300
324
|
@events_queue << event_model
|
@@ -304,7 +328,7 @@ module MoesifRack
|
|
304
328
|
end
|
305
329
|
|
306
330
|
if !@event_response_config_etag.nil? && !@config_etag.nil? && @config_etag != @event_response_config_etag && Time.now.utc > (@last_config_download_time + 300)
|
307
|
-
begin
|
331
|
+
begin
|
308
332
|
new_config = @app_config.get_config(@api_controller)
|
309
333
|
if !new_config.nil?
|
310
334
|
@config, @config_etag, @last_config_download_time = @app_config.parse_configuration(new_config)
|
@@ -334,7 +358,7 @@ module MoesifRack
|
|
334
358
|
end
|
335
359
|
|
336
360
|
if !should_skip
|
337
|
-
begin
|
361
|
+
begin
|
338
362
|
process_send.call
|
339
363
|
rescue => exception
|
340
364
|
@moesif_helpers.log_debug 'Error while logging event - '
|
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.4.
|
4
|
+
version: 1.4.18
|
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:
|
12
|
+
date: 2023-02-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-unit
|