upfluence-utils 0.9.4 → 0.10.2
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/upfluence/http/endpoint/api_endpoint.rb +1 -1
- data/lib/upfluence/http/middleware/prometheus.rb +9 -5
- data/lib/upfluence/mixin/html_scrubbing.rb +25 -0
- data/lib/upfluence/utils/thrift/middleware/error_catcher.rb +10 -0
- data/lib/upfluence/utils/version.rb +1 -1
- data/rbutils.gemspec +1 -0
- metadata +18 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e165b139bfb84f2f7542f52d4bb0df3e5fb10277ebf42d776101339372c1da74
|
|
4
|
+
data.tar.gz: '069f2d3e7e58224388753f264594b636ef94cc8d2de96cbd1e6ef7c142f33ad8'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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:
|
|
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:
|
|
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)
|
data/rbutils.gemspec
CHANGED
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.
|
|
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-
|
|
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.
|
|
310
|
+
rubygems_version: 3.0.3
|
|
296
311
|
signing_key:
|
|
297
312
|
specification_version: 4
|
|
298
313
|
summary: Upfluence common utils for Ruby projects
|