Sha256: 34554ba54b87a705af422df9fb0432b598258e857621beaccdc10fbf997c23c5

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

module Mihari
  module Structs
    module BinaryEdge
      class Target < Dry::Struct
        attribute :ip, Types::String

        #
        # @return [String]
        #
        def ip
          attributes[:ip]
        end

        class << self
          def from_dynamic!(d)
            d = Types::Hash[d]
            new(
              ip: d.fetch("ip")
            )
          end
        end
      end

      class Event < Dry::Struct
        attribute :target, Target

        #
        # @return [Target]
        #
        def target
          attributes[:target]
        end

        class << self
          def from_dynamic!(d)
            d = Types::Hash[d]
            new(
              target: Target.from_dynamic!(d.fetch("target"))
            )
          end
        end
      end

      class Response < Dry::Struct
        # @!attribute [r] page
        # @return [Integer]
        attribute :page, Types::Integer

        # @!attribute [r] pagesize
        # @return [Integer]
        attribute :pagesize, Types::Integer

        # @!attribute [r] total
        # @return [Integer]
        attribute :total, Types::Integer

        # @!attribute [r] events
        # @return [Array<Event>]
        attribute :events, Types.Array(Event)

        #
        # @return [Array<Event>]
        #
        def events
          attributes[:events]
        end

        #
        # @return [Array<Artifact>]
        #
        def artifacts
          events.map { |event| Models::Artifact.new(data: event.target.ip) }
        end

        class << self
          def from_dynamic!(d)
            d = Types::Hash[d]
            new(
              page: d.fetch("page"),
              pagesize: d.fetch("pagesize"),
              total: d.fetch("total"),
              events: d.fetch("events").map { |x| Event.from_dynamic!(x) }
            )
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mihari-5.6.2 lib/mihari/structs/binaryedge.rb