upfluence-utils 0.11.3 → 0.11.4

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: 9013ce0511178b0b0f2bbfd16704d016e41ef8126c0632fdc8289a6f2928dabd
4
- data.tar.gz: '09dc43555bf935fe12be76168692d24b72b4ae064f7a7edc27a1e52b0e0acdcb'
3
+ metadata.gz: b5084c4d4ec0053296da08af0f701e3533c3c04e097c58bd48d674ab6ce02f15
4
+ data.tar.gz: 04dff5174d8d510c22c8236f54d1033100bdde9102955e66bb28e25e8c94146e
5
5
  SHA512:
6
- metadata.gz: 0bf6d2d6b2ea5398ebed18ed22e21951414a35f67a7bc4c8b8461b55600337c0e7e88ace3cc040c7e3c4affafbe7f0c702cfadd490b317dd63f3747081ed9d4e
7
- data.tar.gz: ac825fd4f3bcb4bd5e8dd33b512bd53c7e61f8cd5049ef427a53960f8f4dc9108f66fe70e80e768aa2c58f02a0fc1d4854e9f42a290803e7455a4d77c4a7609a
6
+ metadata.gz: 10db3f2f7d9e1ae72d51ae9f6007d994b6e1b7d86752a68c94d212c1bb894360c6bf7f7f88857afb67c8fe780077f72d251499b0146d32583aa4686f4a24568f
7
+ data.tar.gz: 811cba7d199587b6d65ebac7a613c23e47f159c5e581d1d09340c34c76a684a8b1d1ae6a56f1a97eae93dabc717673246d8a65805aa35d32fd94834da2fe1cd5
@@ -0,0 +1,16 @@
1
+ module Upfluence
2
+ module HTTP
3
+ module Middleware
4
+ class RequestStapler
5
+ def initialize(app)
6
+ @app = app
7
+ end
8
+
9
+ def call(env)
10
+ Server.request = Rack::Request.new(env)
11
+ @app.call(env)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -14,23 +14,26 @@ require 'upfluence/http/middleware/application_headers'
14
14
  require 'upfluence/http/middleware/handle_exception'
15
15
  require 'upfluence/http/middleware/prometheus'
16
16
  require 'upfluence/http/middleware/cors'
17
+ require 'upfluence/http/middleware/request_stapler'
17
18
 
18
19
  module Upfluence
19
20
  module HTTP
20
21
  class Server
22
+ REQUEST_CONTEXT_KEY = :uhtt_request_context
23
+ DEFAULT_MIDDLEWARES = []
21
24
  DEFAULT_OPTIONS = {
22
- server: :puma,
23
- Port: ENV['PORT'] || 8080,
24
- Host: '0.0.0.0',
25
- threaded: true,
26
- interfaces: [],
27
- push_gateway_url: ENV['PUSH_GATEWAY_URL'],
25
+ server: :puma,
26
+ Port: ENV.fetch('PORT', 8080),
27
+ Host: '0.0.0.0',
28
+ threaded: true,
29
+ interfaces: [],
30
+ push_gateway_url: ENV.fetch('PUSH_GATEWAY_URL', nil),
28
31
  push_gateway_interval: 15, # sec
29
- app_name: ENV['APP_NAME'] || 'uhttp-rb-server',
30
- unit_name: ENV['UNIT_NAME'] || 'uhttp-rb-server-anonymous',
31
- base_processor_klass: nil,
32
- base_handler_klass: nil,
33
- debug: ENV['DEBUG']
32
+ app_name: ENV.fetch('APP_NAME', 'uhttp-rb-server'),
33
+ unit_name: ENV.fetch('UNIT_NAME','uhttp-rb-server-anonymous'),
34
+ base_processor_klass: nil,
35
+ base_handler_klass: nil,
36
+ debug: ENV.fetch('DEBUG', nil)
34
37
  }
35
38
 
36
39
  def initialize(options = {}, &block)
@@ -43,6 +46,7 @@ module Upfluence
43
46
  end
44
47
 
45
48
  @builder = Builder.new do
49
+ use Middleware::RequestStapler
46
50
  use Middleware::Logger
47
51
  use Middleware::Prometheus
48
52
  use Middleware::ApplicationHeaders, base_handler
@@ -55,6 +59,11 @@ module Upfluence
55
59
  use Rack::ETag
56
60
  use Middleware::CORS if Upfluence.env.development?
57
61
 
62
+ DEFAULT_MIDDLEWARES.each do |m|
63
+ m = [m] unless m.is_a?(Array)
64
+ use(*m)
65
+ end
66
+
58
67
  map '/healthcheck' do
59
68
  run(opts[:healthcheck_endpoint] || Endpoint::Healthcheck.new)
60
69
  end
@@ -87,6 +96,16 @@ module Upfluence
87
96
  end
88
97
  end
89
98
 
99
+ class << self
100
+ def request
101
+ Thread.current[REQUEST_CONTEXT_KEY]
102
+ end
103
+
104
+ def request=(req)
105
+ Thread.current[REQUEST_CONTEXT_KEY] = req
106
+ end
107
+ end
108
+
90
109
  private
91
110
 
92
111
  def run_prometheus_exporter
@@ -101,7 +120,7 @@ module Upfluence
101
120
 
102
121
  begin
103
122
  push.replace Prometheus::Client.registry
104
- rescue => e
123
+ rescue StandardError => e
105
124
  Upfluence.error_logger.notify(e)
106
125
  end
107
126
  end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.11.3'.freeze
3
+ VERSION = '0.11.4'.freeze
4
4
  end
5
5
  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.11.3
4
+ version: 0.11.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-03 00:00:00.000000000 Z
11
+ date: 2023-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -267,6 +267,7 @@ files:
267
267
  - lib/upfluence/http/middleware/handle_exception.rb
268
268
  - lib/upfluence/http/middleware/logger.rb
269
269
  - lib/upfluence/http/middleware/prometheus.rb
270
+ - lib/upfluence/http/middleware/request_stapler.rb
270
271
  - lib/upfluence/http/server.rb
271
272
  - lib/upfluence/logger.rb
272
273
  - lib/upfluence/mixin/html_scrubbing.rb