Sha256: d6a2cf2242d6fd34c2c1a5e17b13cef956570e9a091f51c198445d333fe6cce7

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

module MISP
  class Galaxy < Base
    # @return [String]
    attr_reader :id
    # @return [String]
    attr_reader :uuid
    # @return [String]
    attr_reader :name
    # @return [String]
    attr_reader :type
    # @return [String]
    attr_reader :description
    # @return [String]
    attr_reader :version

    # @return [Array<MISP::GalaxyCluster>]
    attr_reader :galaxy_clusters

    def initialize(**attributes)
      attributes = normalize_attributes(**attributes)

      @id = attributes[:id]
      @uuid = attributes[:uuid]
      @name = attributes[:name]
      @type = attributes[:type]
      @description = attributes[:description]
      @version = attributes[:version]

      @galaxy_clusters = build_plural_attribute(items: attributes[:GalaxyCluster], klass: GalaxyCluster)
    end

    #
    # Returns a hash representation of the attribute data.
    #
    # @return [Hash]
    #
    def to_h
      {
        id: id,
        uuid: uuid,
        name: name,
        type: type,
        description: description,
        version: version,
        GalaxyCluster: galaxy_clusters.map(&:to_h)
      }.compact
    end

    #
    # List galaxies
    #
    # @return [Array<Galaxy>]
    #
    def list
      _get("/galaxies/") do |galaxies|
        galaxies.map do |galaxy|
          Galaxy.new(**galaxy)
        end
      end
    end

    #
    # Get a galaxy
    #
    # @return [MISP::Galaxy]
    #
    def get
      _get("/galaxies/view/#{id}") { |galaxy| Galaxy.new(**galaxy) }
    end

    class << self
      def list
        new.list
      end

      def get(id)
        new(id: id).get
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
misp-0.1.4 lib/misp/galaxy.rb