Class: FetchUtil::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/fetch_util/cli.rb

Constant Summary collapse

DEFAULT_FETCH_FIELDS =
%i[
  url
  final_url
  canonical_url
  title
  byline
  site_name
  published_time
  markdown
  content_type
  suspect
  warnings
  error_message
].freeze

Instance Method Summary collapse

Instance Method Details

#fetch(*urls) ⇒ Object

Raises:

  • (ArgumentError)


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/fetch_util/cli.rb', line 38

def fetch(*urls)
  raise ArgumentError, "at least one URL is required" if urls.empty?

  results = if urls.length == 1
              [FetchUtil.fetch(urls.first, **fetch_options, request_log: request_log)]
            else
              FetchUtil.fetch_many(urls, **fetch_options, request_log: request_log, concurrency: options[:concurrency])
            end

  if options[:format] == "markdown"
    results.each_with_index do |result, index|
      puts "\n---\n\n" if index > 0
      puts result.markdown
    end
  else
    emit(urls.length == 1 && options[:format] == "json" ? result_payload(results.first) : results.map { |result| result_payload(result) })
  end
end

#regulatory(url) ⇒ Object

Raises:

  • (ArgumentError)


80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/fetch_util/cli.rb', line 80

def regulatory(url)
  raise ArgumentError, "url is required" if url.to_s.strip.empty?

  request_log.append("regulatory://#{url}?sources=#{options[:sources]}")
  payload = FetchUtil.regulatory(
    url,
    cache_path: options[:cache_path],
    sources: options[:sources],
    timeout: options[:timeout]
  )

  emit(payload)
end

#search(*terms) ⇒ Object

Raises:

  • (ArgumentError)


61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/fetch_util/cli.rb', line 61

def search(*terms)
  query = terms.join(" ").strip
  raise ArgumentError, "query is required" if query.empty?

  payload = Searcher.new(
    request_log: request_log,
    sources: options[:source],
    limit: options[:limit],
    concurrency: [options[:concurrency], options[:source].length].min,
    verbose: options[:verbose_search],
    **fetch_options
  ).search(query)

  emit(payload)
end

#versionObject



33
34
35
# File 'lib/fetch_util/cli.rb', line 33

def version
  puts FetchUtil::VERSION
end