upfluence-utils 0.9.4 → 0.10.2

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: aa9bd490a9a2cd9c548925ebd068e9cbe33e29ab1b8ff94c9e0d9edab622da66
4
- data.tar.gz: f61adace9b4078ce5231b7e65cad0b6205d5794459bd5aa952925e99c10a90aa
3
+ metadata.gz: e165b139bfb84f2f7542f52d4bb0df3e5fb10277ebf42d776101339372c1da74
4
+ data.tar.gz: '069f2d3e7e58224388753f264594b636ef94cc8d2de96cbd1e6ef7c142f33ad8'
5
5
  SHA512:
6
- metadata.gz: 4f69d56979c1fe6cda75022744e4c583c83e1a8a80c3a5aac2c93ea182d62d847df433496529324dd5bbd67f9a69becd70ce18826bdf31de8ce184b80ff9f2d5
7
- data.tar.gz: 4a85bc22c5a54b6512e7a4c37ee153755e9533a328a109bc5e9098e00dad4780177a5ef754897f0ed59031d087396dfce18b18f227d882f7ee6991c8ffb019e5
6
+ metadata.gz: 76fd919f917a42efad089f545ec02d0d343a2e0df692ac452250ae60aa2f9c3480ecddb902506cdae2ec9082af3f89a4c499612ad4f385dbf98a587af947a0d6
7
+ data.tar.gz: '08368ab11e84e4ef0cc5affc56b27157ab65e9b05b2351011d092e4788e3409959324a14e6c4c677ebdd7eff2b130f32bc7f3d978f5d93c33773b70f516fdcd1'
@@ -101,7 +101,7 @@ module Upfluence
101
101
  [422, Base::Exceptions::ValidationError.from_model(e.record).to_json]
102
102
  end
103
103
 
104
- Sinatra::Base.error StrongParameters::ParameterMissing.error do |e|
104
+ Sinatra::Base.error Upfluence::Mixin::StrongParameters::ParameterMissing do |e|
105
105
  [
106
106
  400,
107
107
  {
@@ -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,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.9.4'.freeze
3
+ VERSION = '0.10.2'.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.4
4
+ version: 0.10.2
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