module Amass::Parsers::JSON
Parses single-line JSON
hashes.
@api semipublic
Public Class Methods
parse(io) { |map_hostname(json)| ... }
click to toggle source
Parses a single-line of JSON
.
@param [IO] io
The IO stream to parse.
@yield [hostname]
The given block will be passed each parsed hostname.
@yieldparam [Hostname] hostname
The parsed hostname.
@return [Enumerator]
If no block is given, an Enumerator will be returned.
# File lib/amass/parsers/json.rb, line 29 def self.parse(io) return enum_for(__method__,io) unless block_given? io.each_line do |line| line.chomp! json = ::JSON.parse(line) yield map_hostname(json) end end
Private Class Methods
map_address(json)
click to toggle source
Maps a JSON
Hash to an {Address}.
@param [Hash{Symbol => Object}] json
The parsed JSON Hash.
@return [Address]
The resulting address.
# File lib/amass/parsers/json.rb, line 70 def self.map_address(json) Address.new( ip: json['ip'], cidr: json['cidr'], asn: json['asn'], desc: json['desc'] ) end
map_hostname(json)
click to toggle source
Maps a JSON
Hash to a {Hostname}.
@param [Hash{Symbol => Object}] json
The parsed JSON Hash.
@return [Hostname]
The resulting hostname.
# File lib/amass/parsers/json.rb, line 51 def self.map_hostname(json) Hostname.new( name: json['name'], domain: json['domain'], addresses: json['addresses'].map(&method(:map_address)), tag: json['tag'], sources: json['sources'] ) end