upfluence-utils 0.7.2 → 0.8.0
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 +14 -6
- data/lib/upfluence/http/middleware/prometheus.rb +19 -13
- data/lib/upfluence/utils/version.rb +1 -1
- data/rbutils.gemspec +3 -2
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ceaeab38d91b29c5642efd418464634aff70d4b856e81838119cfb9bb51ea07
|
4
|
+
data.tar.gz: d1bfcabd937fd21089a5a612c978975bfb076c247281b7e120be395898a85fc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc7bca3bd0914d787e15e30900705037a845f98311df404e4a40f0f016241bd014691a235c340b543a30b51fc477eca413cadd49889e9ed36bf6c30e4a2bf4eb
|
7
|
+
data.tar.gz: 14d6565989fff758bb50662eb7dfbb2e2e9423469f85656a4cf78c3eac0ca7ceaaa6ed620f72335c3c747ceb495bd96bf85c9c1e8d28733359e2c70d04fc9c86
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'sinatra'
|
2
|
+
require 'active_record'
|
3
|
+
require 'active_support/hash_with_indifferent_access'
|
2
4
|
|
3
5
|
module Upfluence
|
4
6
|
module HTTP
|
@@ -31,9 +33,9 @@ module Upfluence
|
|
31
33
|
token = params[:access_token]
|
32
34
|
|
33
35
|
unless token
|
34
|
-
pattern
|
35
|
-
header
|
36
|
-
token
|
36
|
+
pattern = /^Bearer /
|
37
|
+
header = request.env['HTTP_AUTHORIZATION']
|
38
|
+
token = header.gsub(pattern, '') if header&.match(pattern)
|
37
39
|
end
|
38
40
|
|
39
41
|
token
|
@@ -50,13 +52,17 @@ module Upfluence
|
|
50
52
|
opts = args.first || {}
|
51
53
|
|
52
54
|
result = if resource.is_a? Enumerable
|
53
|
-
USerializer::ArraySerializer.new(
|
55
|
+
USerializer::ArraySerializer.new(
|
56
|
+
resource, *args
|
57
|
+
).to_json
|
54
58
|
elsif opts[:serializer]
|
55
59
|
opts[:serializer].new(resource, *args).to_json
|
56
60
|
elsif resource.respond_to?(:serialize)
|
57
61
|
resource.serialize(*args).to_json
|
58
62
|
else
|
59
|
-
USerializer.serializer_for(resource).new(
|
63
|
+
USerializer.serializer_for(resource).new(
|
64
|
+
resource, *args
|
65
|
+
).to_json
|
60
66
|
end
|
61
67
|
end
|
62
68
|
|
@@ -64,7 +70,9 @@ module Upfluence
|
|
64
70
|
end
|
65
71
|
|
66
72
|
def json_params
|
67
|
-
ActiveSupport::HashWithIndifferentAccess.new(
|
73
|
+
ActiveSupport::HashWithIndifferentAccess.new(
|
74
|
+
JSON.parse(request_body)
|
75
|
+
)
|
68
76
|
end
|
69
77
|
end
|
70
78
|
|
@@ -5,6 +5,8 @@ module Upfluence
|
|
5
5
|
module HTTP
|
6
6
|
module Middleware
|
7
7
|
class Prometheus
|
8
|
+
LABELS = %i[path method env].freeze
|
9
|
+
|
8
10
|
def initialize(app, registry = ::Prometheus::Client.registry)
|
9
11
|
@registry = registry
|
10
12
|
|
@@ -12,14 +14,16 @@ module Upfluence
|
|
12
14
|
:uhttp_handler_requests_total
|
13
15
|
) || @registry.counter(
|
14
16
|
:uhttp_handler_requests_total,
|
15
|
-
'Histogram of processed items',
|
17
|
+
docstring: 'Histogram of processed items',
|
18
|
+
labels: LABELS + %i[status]
|
16
19
|
)
|
17
20
|
|
18
21
|
@request_histogram = @registry.get(
|
19
22
|
:uhttp_handler_requests_duration_second
|
20
23
|
) || @registry.histogram(
|
21
24
|
:uhttp_handler_requests_duration_second,
|
22
|
-
'Histogram of processing time',
|
25
|
+
docstring: 'Histogram of processing time',
|
26
|
+
labels: LABELS
|
23
27
|
)
|
24
28
|
|
25
29
|
@app = app
|
@@ -41,19 +45,21 @@ module Upfluence
|
|
41
45
|
|
42
46
|
def record(env, code, duration)
|
43
47
|
@request_total_count.increment(
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
labels: {
|
49
|
+
path: parse_route(env),
|
50
|
+
method: env['REQUEST_METHOD'].downcase,
|
51
|
+
status: code,
|
52
|
+
env: Upfluence.env.to_s
|
53
|
+
}
|
48
54
|
)
|
49
55
|
|
50
56
|
@request_histogram.observe(
|
51
|
-
|
52
|
-
|
57
|
+
duration,
|
58
|
+
labels: {
|
59
|
+
path: parse_route(env),
|
53
60
|
method: env['REQUEST_METHOD'].downcase,
|
54
|
-
env:
|
55
|
-
}
|
56
|
-
duration
|
61
|
+
env: Upfluence.env.to_s
|
62
|
+
}
|
57
63
|
)
|
58
64
|
end
|
59
65
|
|
@@ -75,8 +81,8 @@ module Upfluence
|
|
75
81
|
|
76
82
|
path = Rack::Request.new(env).path
|
77
83
|
|
78
|
-
splitted_template = route.split(' ').last.split('/').
|
79
|
-
v
|
84
|
+
splitted_template = route.split(' ').last.split('/').rejext do |v|
|
85
|
+
v.eql?('')
|
80
86
|
end.reverse
|
81
87
|
|
82
88
|
path.split('/').reverse.map.with_index do |part, i|
|
data/rbutils.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
19
|
spec.add_development_dependency "bundler", "~> 1.12"
|
20
|
-
spec.add_development_dependency "rake", "
|
20
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
21
21
|
spec.add_development_dependency "rspec", "~> 3.0"
|
22
22
|
spec.add_runtime_dependency 'upfluence-thrift', '~> 2.1'
|
23
23
|
spec.add_runtime_dependency 'base-thrift', '>= 0.1.0'
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_runtime_dependency 'puma'
|
30
30
|
spec.add_runtime_dependency 'rack'
|
31
31
|
spec.add_runtime_dependency 'stackprof'
|
32
|
-
spec.add_runtime_dependency 'prometheus-client', '~>
|
32
|
+
spec.add_runtime_dependency 'prometheus-client', '~> 2.1'
|
33
33
|
spec.add_runtime_dependency 'userializer'
|
34
|
+
spec.add_runtime_dependency 'activerecord'
|
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.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Upfluence
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 12.3.3
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 12.3.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,14 +198,14 @@ dependencies:
|
|
198
198
|
requirements:
|
199
199
|
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: '2.1'
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: '2.1'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: userializer
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,6 +220,20 @@ dependencies:
|
|
220
220
|
- - ">="
|
221
221
|
- !ruby/object:Gem::Version
|
222
222
|
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: activerecord
|
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
|