Class: WPScan::Formatter::Jsonl
Overview
JSON Lines formatter — streams one self-contained JSON object per template render as the scan progresses. Reuses every app/views/json/*.erb template via base_format, so output content matches ‘-f json` but is emitted incrementally and can be piped directly into tools like `jq`.
Constant Summary
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods inherited from Base
#beautify, #format, #formats, #initialize, #render, #template_vars, #user_interaction?, #view_path, #views_directories
Constructor Details
This class inherits a constructor from WPScan::Formatter::Base
Instance Method Details
#base_format ⇒ Object
10 11 12 |
# File 'app/formatters/jsonl.rb', line 10 def base_format 'json' end |
#output(tpl, vars = {}, controller_name = nil) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'app/formatters/jsonl.rb', line 18 def output(tpl, vars = {}, controller_name = nil) rendered = render(tpl, vars, controller_name) .encode('UTF-8', invalid: :replace, undef: :replace) fragment = rendered.strip.chomp(',') return if fragment.empty? $stdout.puts JSON.generate(JSON.parse("{#{fragment}}")) $stdout.flush end |
#streams? ⇒ Boolean
14 15 16 |
# File 'app/formatters/jsonl.rb', line 14 def streams? true end |