class Irrc::Query
Public: IRR / Whois query and result container.
Attributes
protocols[R]
sources[R]
Public Class Methods
new(object, options={})
click to toggle source
Public: Create a new Query
object.
object - IRR object to extract. (eg: as-set, route-set, aut-num object) options - The Hash options to pass to IRR. (default: {procotol: [:ipv4, :ipv6]})
:source - Specify authoritative IRR source names. If not given, any source will be accepted. (optional) :protocol - :ipv4, :ipv6 or [:ipv4, :ipv6] A String or Symbol of protcol name is acceptable. (optional)
Examples
Irrc::Query.new('AS-JPNIC', source: :jpirr, protocol: :ipv4) Irrc::Query.new('AS-JPNIC', source: [:jpirr, :radb])
# File lib/irrc/query.rb, line 28 def initialize(object, options={}) options = {protocol: [:ipv4, :ipv6]}.merge(options) self.sources = options[:source] self.protocols = options[:protocol] self.object = object.to_s end
Public Instance Methods
add_aut_num_result(autnums)
click to toggle source
Public: Register aut-num object(s) as a result.
autnums - aut-num object(s) in String. Array form is also acceptable for multiple objects.
# File lib/irrc/query.rb, line 42 def add_aut_num_result(autnums) result = root.result @protocols.each do |protocol| result[protocol] ||= {} Array(autnums).each do |autnum| result[protocol][autnum] ||= [] end end end
add_prefix_result(prefixes, autnum, protocol)
click to toggle source
Public: Register route object(s) as a result.
prefixes - route object(s) in String. Array form is also acceptable for multiple objects. autnum - Which aut-num has the route object(s). protocol - Which protocol the route object(s) is for. :ipv4 or :ipv6.
A String or Symbol of protcol name is acceptable.
# File lib/irrc/query.rb, line 60 def add_prefix_result(prefixes, autnum, protocol) result = root.result result[protocol] ||= {} result[protocol][autnum] ||= [] result[protocol][autnum].push *Array(prefixes) end
result()
click to toggle source
# File lib/irrc/query.rb, line 35 def result @result ||= Struct.new(:ipv4, :ipv6).new end
Private Instance Methods
protocols=(protocols)
click to toggle source
# File lib/irrc/query.rb, line 75 def protocols=(protocols) protocols = Array(protocols).compact.map(&:to_s).flatten.uniq invalid = protocols - ['ipv4', 'ipv6'] raise ArgumentError, "Invalid protocol: #{invalid.join(', ')}" unless invalid.empty? @protocols = protocols end
sources=(sources)
click to toggle source
# File lib/irrc/query.rb, line 71 def sources=(sources) @sources = Array(sources).compact.map(&:to_s).flatten.uniq end