Sha256: d0c32ce14defd87cd5f939af1b377b76bef2c11379513c143f6b8dbe88a9611a

Contents?: true

Size: 1.48 KB

Versions: 10

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

require "mihari/schemas/analyzer"
require "mihari/schemas/emitter"
require "mihari/schemas/enricher"

module Mihari
  module Schemas
    Rule = Dry::Schema.Params do
      required(:id).value(:string)
      required(:title).value(:string)
      required(:description).value(:string)

      optional(:tags).value(array[:string]).default([])

      optional(:author).value(:string)
      optional(:references).value(array[:string])
      optional(:related).value(array[:string])
      optional(:status).value(:string)

      optional(:created_on).value(:date)
      optional(:updated_on).value(:date)

      required(:queries).value(:array).each { Analyzer } # rubocop:disable Lint/Void

      optional(:emitters).value(:array).each { Emitter }.default(DEFAULT_EMITTERS) # rubocop:disable Lint/Void
      optional(:enrichers).value(:array).each { Enricher }.default(DEFAULT_ENRICHERS) # rubocop:disable Lint/Void

      optional(:data_types).value(array[Types::DataTypes]).default(Mihari::Types::DataTypes.values)
      optional(:falsepositives).value(array[:string]).default([])

      optional(:artifact_ttl).value(:integer)
    end

    #
    # Rule schema contract
    #
    class RuleContract < Dry::Validation::Contract
      include Mihari::Concerns::FalsePositiveValidatable

      params(Rule)

      rule(:falsepositives) do
        value.each do |v|
          key.failure("#{v} is not a valid format.") unless valid_falsepositive?(v)
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
mihari-7.1.3 lib/mihari/schemas/rule.rb
mihari-7.1.2 lib/mihari/schemas/rule.rb
mihari-7.1.1 lib/mihari/schemas/rule.rb
mihari-7.1.0 lib/mihari/schemas/rule.rb
mihari-7.0.5 lib/mihari/schemas/rule.rb
mihari-7.0.4 lib/mihari/schemas/rule.rb
mihari-7.0.3 lib/mihari/schemas/rule.rb
mihari-7.0.2 lib/mihari/schemas/rule.rb
mihari-7.0.1 lib/mihari/schemas/rule.rb
mihari-7.0.0 lib/mihari/schemas/rule.rb