Class: DiffTest::Integrations::RailsJs::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/diff_test/integrations/rails_js/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



8
9
10
# File 'lib/diff_test/integrations/rails_js/middleware.rb', line 8

def initialize(app)
  @app = app
end

Instance Method Details

#_call(env) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/diff_test/integrations/rails_js/middleware.rb', line 16

def _call(env)
  path = env['PATH_INFO'] || ''

  if path.include?('__diff_test_js_beacon')
    body = env['rack.input'].read
    json = JSON.parse(body)
    json['file_paths'].each do |file_path|
      DiffTest::Trackers::JsFile.record_by_test_id(json['test_id'], file_path)
    end
    [204, {}, []]
  else
    env.delete('HTTP_IF_NONE_MATCH')
    env.delete('HTTP_IF_MODIFIED_SINCE')

    status, headers, body = result = @app.call(env)

    return result if ProcessingSkipAnalyzer.skip_processing?(result, env, @options)

    processor = BodyProcessor.new(body, @options)
    processor.process!(env)

    headers['content-length'] = processor.content_length.to_s

    [status, headers, processor.new_body]
  end
end

#call(env) ⇒ Object



12
13
14
# File 'lib/diff_test/integrations/rails_js/middleware.rb', line 12

def call(env)
  dup._call(env)
end