ninoseki/ryo

View on GitHub
lib/ryo/plugin/shodan.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require "shodanz"

module Ryo
  module Plugin
    class Shodan
      attr_reader :client
      def initialize
        raise ArgumentError, "Please set your Shodan API key via ENV['SHODAN_API_KEY']" unless ENV["SHODAN_API_KEY"]
        @client = Shodanz.client.new
      end

      def discover(ip)
        ip == "N/A" ? { error: "Invalid IP" } : client.rest_api.host(ip)
      end

      def self.discover(ip)
        new.discover(ip)
      rescue ArgumentError => e
        { error: e.to_s }
      rescue StandardError => e
        { error: e.to_s }
      end
    end
  end
end