upfluence-utils 0.9.5 → 0.10.3

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: a772a1a30ba2d049bcc080e162bd3c7c7a0168210d93e84dfb187c346bc7f559
4
- data.tar.gz: e2677f4fcf561c494915dee9204150ec93e92600e7a5413bc7af7bed6143ed15
3
+ metadata.gz: 7224bbbf6f3f8148ab29757de71e78d20150d0ec1723ebd783495ef75eee42d3
4
+ data.tar.gz: 6521d96e7d1379e19f3a9d5d6e2dc73d657fb5aa2717b4656f4baa03aa09e3e4
5
5
  SHA512:
6
- metadata.gz: 3ee9fbf46fa1421d1f3e66a29e701eda7cbdd361dc8b8d2a5e4ec1baa1a412a91502a99c8cd3389eaaffcc2a9d0d600d2fac1814232df659b84e5092176eb61a
7
- data.tar.gz: 2d5551334b452dfd16d40340665d42e4efb7f4694ccb302b497dbe48f7113d206db8da2a704188a8670ee4209d95430ed5e59bcb69d56116601c3fc82a51a29a
6
+ metadata.gz: '0742070824a9cb9ce9812484e99e1bc2fc741da8de26fee3229ecebeecc4fc8833e0d9fa25243b58898c9e5b5e91521c7c4b226e937b42c49d22f79eaca68599'
7
+ data.tar.gz: 997855dfb5c929120397e603a640b253b87444e72c961c006aa1341a88df4adf529e583e2516b51e156950b419879032486bf96b5f8f3008f366c60cf0f76871
@@ -44,9 +44,11 @@ module Upfluence
44
44
  end
45
45
 
46
46
  def record(env, code, duration)
47
+ path = parse_route(env, code)
48
+
47
49
  @request_total_count.increment(
48
50
  labels: {
49
- path: parse_route(env),
51
+ path: path,
50
52
  method: env['REQUEST_METHOD'].downcase,
51
53
  status: code,
52
54
  env: Upfluence.env.to_s
@@ -56,16 +58,16 @@ module Upfluence
56
58
  @request_histogram.observe(
57
59
  duration,
58
60
  labels: {
59
- path: parse_route(env),
61
+ path: path,
60
62
  method: env['REQUEST_METHOD'].downcase,
61
63
  env: Upfluence.env.to_s
62
64
  }
63
65
  )
64
66
  end
65
67
 
66
- def parse_route(env)
68
+ def parse_route(env, code)
67
69
  parse_route_sinatra(env) || parse_route_rails(env) ||
68
- parse_route_default(env)
70
+ parse_route_default(env, code)
69
71
  end
70
72
 
71
73
  def parse_route_rails(env)
@@ -90,7 +92,9 @@ module Upfluence
90
92
  end.reverse.join('/')
91
93
  end
92
94
 
93
- def parse_route_default(env)
95
+ def parse_route_default(env, code)
96
+ return 'unexpected-route' if code.eql? 404
97
+
94
98
  Rack::Request.new(env).path.gsub(%r{/\d+(/|$)}, '/:id\\1')
95
99
  end
96
100
  end
@@ -0,0 +1,25 @@
1
+ require 'loofah'
2
+
3
+ module Upfluence
4
+ module Mixin
5
+ module HTMLScrubbing
6
+ def scrub_params(params, *keys)
7
+ keys.reduce(params) do |vs, key|
8
+ if vs.key? key
9
+ vs.merge(key => scrub_value(vs[key]))
10
+ else
11
+ vs
12
+ end
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def scrub_value(value)
19
+ return nil unless value.is_a? String
20
+
21
+ Loofah.fragment(value).scrub!(:prune).to_s
22
+ end
23
+ end
24
+ end
25
+ end
@@ -3,6 +3,12 @@ module Upfluence
3
3
  module Thrift
4
4
  module Middleware
5
5
  class ErrorCatcher
6
+ STANDARD_THRIFT_EXCEPTIONS = [
7
+ ::Thrift::ApplicationException,
8
+ ::Thrift::TransportException,
9
+ ::Thrift::ProtocolException
10
+ ].freeze
11
+
6
12
  def initialize(app, error_logger)
7
13
  @app = app
8
14
  @error_logger = error_logger
@@ -11,6 +17,10 @@ module Upfluence
11
17
  def method_missing(method, *args, &block)
12
18
  @app.send(method, *args, &block)
13
19
  rescue ::Thrift::Exception => e
20
+ if STANDARD_THRIFT_EXCEPTIONS.include? exc.class
21
+ @error_logger.notify(e, method, *args)
22
+ end
23
+
14
24
  raise e
15
25
  rescue => e
16
26
  @error_logger.notify(e, method, *args)
@@ -1 +1,2 @@
1
+ require 'thrift'
1
2
  require 'upfluence/utils/thrift/middleware'
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.9.5'.freeze
3
+ VERSION = '0.10.3'.freeze
4
4
  end
5
5
  end
data/rbutils.gemspec CHANGED
@@ -31,4 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.add_runtime_dependency 'prometheus-client', '~> 2.1'
32
32
  spec.add_runtime_dependency 'userializer'
33
33
  spec.add_runtime_dependency 'activerecord'
34
+ spec.add_runtime_dependency 'loofah'
34
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-01 00:00:00.000000000 Z
11
+ date: 2021-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -220,6 +220,20 @@ dependencies:
220
220
  - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: loofah
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
223
237
  description:
224
238
  email:
225
239
  - dev@upfluence.com
@@ -255,6 +269,7 @@ files:
255
269
  - lib/upfluence/http/middleware/prometheus.rb
256
270
  - lib/upfluence/http/server.rb
257
271
  - lib/upfluence/logger.rb
272
+ - lib/upfluence/mixin/html_scrubbing.rb
258
273
  - lib/upfluence/mixin/pagination.rb
259
274
  - lib/upfluence/mixin/strong_parameters.rb
260
275
  - lib/upfluence/peer.rb
@@ -292,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
307
  - !ruby/object:Gem::Version
293
308
  version: '0'
294
309
  requirements: []
295
- rubygems_version: 3.1.4
310
+ rubygems_version: 3.0.3
296
311
  signing_key:
297
312
  specification_version: 4
298
313
  summary: Upfluence common utils for Ruby projects