Sha256: c1b7320a55d14dcec0163b030207b88476c3a954f94a90016f0a068bcce776ae

Contents?: true

Size: 1.85 KB

Versions: 9

Compression:

Stored size: 1.85 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| 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

9 entries across 9 versions & 1 rubygems

Version Path
mihari-5.6.1 lib/mihari/structs/binaryedge.rb
mihari-5.6.0 lib/mihari/structs/binaryedge.rb
mihari-5.5.0 lib/mihari/structs/binaryedge.rb
mihari-5.4.9 lib/mihari/structs/binaryedge.rb
mihari-5.4.8 lib/mihari/structs/binaryedge.rb
mihari-5.4.7 lib/mihari/structs/binaryedge.rb
mihari-5.4.6 lib/mihari/structs/binaryedge.rb
mihari-5.4.5 lib/mihari/structs/binaryedge.rb
mihari-5.4.4 lib/mihari/structs/binaryedge.rb