Sha256: c4c8a881d9330e4141c2a8c8a0f1b4b07a54ac60ec3788df27f2ad3dd9e8ecf0

Contents?: true

Size: 903 Bytes

Versions: 3

Compression:

Stored size: 903 Bytes

Contents

# frozen_string_literal: true

module Miteru
  module Notifiers
    class UrlScan < Base
      #
      # @param [Miteru::Website] website
      #
      def call(website)
        return unless callable?

        website.kits.each { |kit| submit(kit.url) }
      end

      def callable?
        !Miteru.config.urlscan_api_key.nil?
      end

      private

      #
      # @return [::HTTP::Client]
      #
      def http
        @http ||= HTTP::Factory.build(headers:, timeout:)
      end

      def headers
        {"api-key": Miteru.config.urlscan_api_key}
      end

      def timeout
        Miteru.config.api_timeout
      end

      def tags
        %w[miteru phishkit]
      end

      def visibility
        Miteru.config.urlscan_submit_visibility
      end

      def submit(url)
        http.post("https://urlscan.io/api/v1/scan/", json: {tags:, visibility:, url:})
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
miteru-2.1.0 lib/miteru/notifiers/urlscan.rb
miteru-2.0.3 lib/miteru/notifiers/urlscan.rb
miteru-2.0.2 lib/miteru/notifiers/urlscan.rb