Class: ProxyPacRb::Rack::ProxyPacLinter
- Inherits:
-
Object
- Object
- ProxyPacRb::Rack::ProxyPacLinter
- Defined in:
- lib/proxy_pac_rb/rack/proxy_pac_linter.rb
Overview
Rack Middleware to lint proxy pac
require ‘proxy_pac_rb/rack/proxy_pac_linter’ use ProxyPacRb::Rack::ProxyPacLinter
require ‘proxy_pac_rb/rack/proxy_pac_linter’ use ProxyPacRb::Rack::ProxyPacLinter
require ‘proxy_pac_rb/rack/proxy_pac_linter’ use ProxyPacRb::Rack::ProxyPacLinter
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, enabled: true) ⇒ ProxyPacLinter
constructor
A new instance of ProxyPacLinter.
Constructor Details
#initialize(app, enabled: true) ⇒ ProxyPacLinter
Returns a new instance of ProxyPacLinter.
27 28 29 30 31 32 33 34 35 |
# File 'lib/proxy_pac_rb/rack/proxy_pac_linter.rb', line 27 def initialize( app, enabled: true ) @app = app @linter = ProxyPacRb::ProxyPacLinter.new(silent: true) @loader = ProxyPacRb::ProxyPacLoader.new @enabled = enabled end |
Instance Method Details
#call(env) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/proxy_pac_rb/rack/proxy_pac_linter.rb', line 37 def call(env) status, headers, body = @app.call(env) return [status, headers, body] if enabled == false return [status, headers, body] unless headers.key?('Content-Type') \ && %r{application/x-ns-proxy-autoconfig} === headers['Content-Type'] content = [] body.each { |part| content << part } content = content.join proxy_pac = ProxyPacFile.new(source: content) loader.load(proxy_pac) linter.lint(proxy_pac) unless proxy_pac.valid? status = 500 content = proxy_pac. headers['Content-Length'] = content.bytesize.to_s if headers['Content-Length'] end [status, headers, [content]] ensure body.close if body.respond_to?(:close) end |