upfluence-utils 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d9bb165753378088d8c1aa9ac2d8a806ca616e55a757470fce8661b3b7d583f1
4
- data.tar.gz: 0ba2eea8776f3fe667f7b706832c27a132622b017f7d66ac36b6ea0f60540852
3
+ metadata.gz: 9ceaeab38d91b29c5642efd418464634aff70d4b856e81838119cfb9bb51ea07
4
+ data.tar.gz: d1bfcabd937fd21089a5a612c978975bfb076c247281b7e120be395898a85fc4
5
5
  SHA512:
6
- metadata.gz: 3dc614b510107cdb8a4288e6acdd7919f77909d56642eb9d68ca89ddbf9f98890b0536424b08853ff8ac3a139af3dee7e6050721526139eebf5e283a2c0d825e
7
- data.tar.gz: 5eb0e42513b6ff40510a01d649ed1d7867c5afc32fbc5136df2be3f90ef20362fd3e2dff34658985f55a0385654f800134f2575aa33ac20d8aa46b950b089da4
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 = /^Bearer /
35
- header = request.env['HTTP_AUTHORIZATION']
36
- token = header.gsub(pattern, '') if header && header.match(pattern)
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(resource, *args).to_json
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(resource, *args).to_json
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(JSON.parse(request_body))
73
+ ActiveSupport::HashWithIndifferentAccess.new(
74
+ JSON.parse(request_body)
75
+ )
68
76
  end
69
77
  end
70
78
 
@@ -84,6 +92,10 @@ module Upfluence
84
92
  Sinatra::Base.not_found do
85
93
  [404, {}, { error: 'not_found' }.to_json]
86
94
  end
95
+
96
+ Sinatra::Base.error ActiveRecord::RecordInvalid do |e|
97
+ [422, Base::Exceptions::ValidationError.from_model(e.record).to_json]
98
+ end
87
99
  end
88
100
  end
89
101
  end
@@ -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
- path: parse_route(env),
45
- method: env['REQUEST_METHOD'].downcase,
46
- status: code,
47
- env: Upfluence.env.to_s
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
- path: parse_route(env),
57
+ duration,
58
+ labels: {
59
+ path: parse_route(env),
53
60
  method: env['REQUEST_METHOD'].downcase,
54
- env: Upfluence.env.to_s
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('/').select do |v|
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|
@@ -0,0 +1,30 @@
1
+ module Upfluence
2
+ class Peer
3
+ attr_reader :environment, :authority, :instance_name, :project_name,
4
+ :app_name
5
+
6
+ def initialize(opts = {})
7
+ @authority = opts[:authority] || 'local'
8
+ @instance_name = opts[:instance_name] || 'unknown-server'
9
+ @app_name = opts[:app_name] || 'unknown-name'
10
+ @project_name = opts[:project_name] || 'unknown-app'
11
+ @environment = opts[:environment] || 'development'
12
+ end
13
+
14
+ def to_url
15
+ "peer://#{@environment}@#{@authority}/#{@instance_name}"
16
+ end
17
+
18
+ class << self
19
+ def from_env
20
+ Peer.new(
21
+ authority: ENV['AUTHORITY'],
22
+ instance_name: ENV['INSTANCE_NAME'],
23
+ app_name: ENV['APP_NAME'],
24
+ project_name: ENV['PROJECT_NAME'],
25
+ environment: ENV['ENV']
26
+ )
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.6.2'.freeze
3
+ VERSION = '0.8.0'.freeze
4
4
  end
5
5
  end
@@ -17,9 +17,9 @@ 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", "~> 10.0"
20
+ spec.add_development_dependency "rake", ">= 12.3.3"
21
21
  spec.add_development_dependency "rspec", "~> 3.0"
22
- spec.add_runtime_dependency 'upfluence-thrift', '~> 1.0', '>= 1.0.3'
22
+ spec.add_runtime_dependency 'upfluence-thrift', '~> 2.1'
23
23
  spec.add_runtime_dependency 'base-thrift', '>= 0.1.0'
24
24
  spec.add_runtime_dependency 'sinatra'
25
25
  spec.add_runtime_dependency 'redis'
@@ -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.6.2
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-03-17 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
40
+ version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,20 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 1.0.3
61
+ version: '2.1'
65
62
  type: :runtime
66
63
  prerelease: false
67
64
  version_requirements: !ruby/object:Gem::Requirement
68
65
  requirements:
69
66
  - - "~>"
70
67
  - !ruby/object:Gem::Version
71
- version: '1.0'
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.0.3
68
+ version: '2.1'
75
69
  - !ruby/object:Gem::Dependency
76
70
  name: base-thrift
77
71
  requirement: !ruby/object:Gem::Requirement
@@ -200,6 +194,20 @@ dependencies:
200
194
  version: '0'
201
195
  - !ruby/object:Gem::Dependency
202
196
  name: prometheus-client
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '2.1'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '2.1'
209
+ - !ruby/object:Gem::Dependency
210
+ name: userializer
203
211
  requirement: !ruby/object:Gem::Requirement
204
212
  requirements:
205
213
  - - ">="
@@ -213,7 +221,7 @@ dependencies:
213
221
  - !ruby/object:Gem::Version
214
222
  version: '0'
215
223
  - !ruby/object:Gem::Dependency
216
- name: userializer
224
+ name: activerecord
217
225
  requirement: !ruby/object:Gem::Requirement
218
226
  requirements:
219
227
  - - ">="
@@ -262,6 +270,7 @@ files:
262
270
  - lib/upfluence/logger.rb
263
271
  - lib/upfluence/mixin/pagination.rb
264
272
  - lib/upfluence/mixin/strong_parameters.rb
273
+ - lib/upfluence/peer.rb
265
274
  - lib/upfluence/pool.rb
266
275
  - lib/upfluence/utils.rb
267
276
  - lib/upfluence/utils/http/middleware/null.rb