Sha256: 2c2de5e8fb484945b8abdcbdd4c7d8692a75fd139aeabdaa1a78b1e668403e81

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

require 'json'
require 'thor'

module UrlScan
  class CLI < Thor
    class_option :API_KEY, type: :string

    desc "submit [URL]", "submit a scan to [URL]"
    method_option :public, type: :boolean, default: true
    def submit(url)
      with_error_handling do
        res = api.submit(url, options[:public])
        puts JSON.pretty_generate(res)
      end
    end

    desc "result [UUID]", "get the result of a scan using the [UUID]"
    def result(uuid)
      with_error_handling do
        res = api.result(uuid)
        puts JSON.pretty_generate(res)
      end
    end

    desc "search [QUERY]", "search for scans by [QUERY]"
    method_option :size, type: :numeric, default: 100
    method_option :offset, type: :numeric, default: 0
    method_option :sort, type: :string, default: "_score"
    def search(query)
      with_error_handling do
        res = api.search(query, options[:size], options[:offset], options[:sort])
        puts JSON.pretty_generate(res)
      end
    end

    no_commands do
      def api
        options[:API_KEY] ? API.new(options[:API_KEY]) : API.new
      end

      def with_error_handling
        yield
      rescue ArgumentError => _
        puts "Warning: please specify your urlscan.io API key via ENV['URLSCAN_API_KEY] or --API-KEY"
      rescue ResponseError => e
        puts "Warning: #{e}"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
urlscan-0.1.1 lib/urlscan/cli.rb
urlscan-0.1.0 lib/urlscan/cli.rb