Sha256: 116049850de571edab912b7c33d7f59476f6d78310a858fc8a65a72eb6c330c8
Contents?: true
Size: 1.81 KB
Versions: 1
Compression:
Stored size: 1.81 KB
Contents
# frozen_string_literal: true require "json" module Mihari module Services # # Alert proxy # class AlertProxy < Service # @return [Hash] attr_reader :data # @return [Array, nil] attr_reader :errors # # Initialize # # @param [Hash] data # def initialize(**data) super() @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.7.0 | lib/mihari/services/alert_proxy.rb |