Sha256: 93923b7b9d38eadb725b1b5e55121b685ffe17cc4fde8691f9a216380635c876
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
# frozen_string_literal: true require "json" module Mihari module Services class AlertProxy # @return [Hash] attr_reader :data # @return [Array, nil] attr_reader :errors # # Initialize # # @param [Hash] data # def initialize(**data) @data = data.deep_symbolize_keys @errors = nil validate! end # # @return [Boolean] # def errors? return false if @errors.nil? !@errors.empty? end def validate! contract = Schemas::AlertContract.new result = contract.call(data) @data = result.to_h @errors = result.errors raise ValidationError.new("Validation failed", errors) if errors? end def [](key) data key.to_sym end # # @return [String] # def rule_id @rule_id ||= data[:rule_id] end # # @return [Array<Mihari::Models::Artifact>] # def artifacts @artifacts ||= data[:artifacts].map do |data| artifact = Models::Artifact.new(data: data) artifact.rule_id = rule_id artifact end.uniq(&:data).select(&:valid?) end # # @return [Mihari::Rule] # def rule @rule ||= [].tap do |out| data = Mihari::Models::Rule.find(rule_id).data out << Rule.new(**data) end.first end class << self # # Load rule from YAML string # # @param [String] yaml # # @return [Mihari::Services::Alert] # def from_yaml(yaml) data = YAML.safe_load(yaml, permitted_classes: [Date, Symbol]) new(**data) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mihari-5.6.2 | lib/mihari/services/alert_proxy.rb |