Class: Gitlab::Testing::RequestInspectorMiddleware
- Inherits:
-
Object
- Object
- Gitlab::Testing::RequestInspectorMiddleware
- Defined in:
- lib/gitlab/testing/request_inspector_middleware.rb
Defined Under Namespace
Classes: Request
Constant Summary collapse
- @@log_requests =
Concurrent::AtomicBoolean.new(false)
- @@logged_requests =
Concurrent::Array.new
- @@inject_headers =
Concurrent::Hash.new
Class Method Summary collapse
-
.log_requests!(headers = {}) ⇒ Object
Resets the current request log and starts logging requests.
- .requests ⇒ Object
-
.stop_logging! ⇒ Object
Stops logging requests.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ RequestInspectorMiddleware
constructor
A new instance of RequestInspectorMiddleware.
Constructor Details
#initialize(app) ⇒ RequestInspectorMiddleware
Returns a new instance of RequestInspectorMiddleware.
30 31 32 |
# File 'lib/gitlab/testing/request_inspector_middleware.rb', line 30 def initialize(app) @app = app end |
Class Method Details
.log_requests!(headers = {}) ⇒ Object
Resets the current request log and starts logging requests
15 16 17 18 19 |
# File 'lib/gitlab/testing/request_inspector_middleware.rb', line 15 def self.log_requests!(headers = {}) @@inject_headers.replace(headers) @@logged_requests.replace([]) @@log_requests.value = true end |
.requests ⇒ Object
26 27 28 |
# File 'lib/gitlab/testing/request_inspector_middleware.rb', line 26 def self.requests @@logged_requests end |
.stop_logging! ⇒ Object
Stops logging requests
22 23 24 |
# File 'lib/gitlab/testing/request_inspector_middleware.rb', line 22 def self.stop_logging! @@log_requests.value = false end |
Instance Method Details
#call(env) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/gitlab/testing/request_inspector_middleware.rb', line 34 def call(env) return @app.call(env) unless @@log_requests.true? url = env['REQUEST_URI'] env.merge! http_headers_env(@@inject_headers) if @@inject_headers.any? request_headers = env_http_headers(env) status, headers, body = @app.call(env) full_body = +'' body.each { |b| full_body << b } request = Request.new( url: url, status_code: status, request_headers: request_headers, response_headers: headers, body: full_body ) log_request request [status, headers, body] end |