Sha256: e909f09e48754e8d79ee9bd77bfee7f5602d25438eeef23fd2cdb1ed3e8431d4

Contents?: true

Size: 641 Bytes

Versions: 4

Compression:

Stored size: 641 Bytes

Contents

# frozen_string_literal: true

require "net/https"

module Mihari
  module Enrichers
    class Shodan < Base
      include Memist::Memoizable

      #
      # Query Shodan Internet DB
      #
      # @param [String] ip
      #
      # @return [Mihari::Structs::Shodan::InternetDBResponse, nil]
      #
      def query(ip)
        url = "https://internetdb.shodan.io/#{ip}"
        res = http.get(url)
        data = JSON.parse(res.body.to_s)

        Structs::Shodan::InternetDBResponse.from_dynamic! data
      end
      memoize :query

      private

      def http
        HTTP::Factory.build timeout: timeout
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mihari-5.6.2 lib/mihari/enrichers/shodan.rb
mihari-5.6.1 lib/mihari/enrichers/shodan.rb
mihari-5.6.0 lib/mihari/enrichers/shodan.rb
mihari-5.5.0 lib/mihari/enrichers/shodan.rb