Sha256: 6e1c7e3322b1df4c235ae4addad5769368643d503ebf5c409b601a17cff6a28b
Contents?: true
Size: 963 Bytes
Versions: 19
Compression:
Stored size: 963 Bytes
Contents
# frozen_string_literal: true module Mihari module Structs module GooglePublicDNS INT_TYPE_TO_TYPE = { 1 => "A", 2 => "NS", 5 => "CNAME", 16 => "TXT", 28 => "AAAA" } class Answer < Dry::Struct attribute :name, Types::String attribute :data, Types::String attribute :resource_type, Types::String def self.from_dynamic!(d) d = Types::Hash[d] resource_type = INT_TYPE_TO_TYPE[d.fetch("type")] new( name: d.fetch("name"), data: d.fetch("data"), resource_type: resource_type ) end end class Response < Dry::Struct attribute :answers, Types.Array(Answer) def self.from_dynamic!(d) d = Types::Hash[d] new( answers: d.fetch("Answer", []).map { |x| Answer.from_dynamic!(x) } ) end end end end end
Version data entries
19 entries across 19 versions & 1 rubygems