Class: FetchUtil::CLI

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

Constant Summary collapse

DEFAULT_FETCH_FIELDS =
%i[
  title
  byline
  site_name
  published_time
  language
  name
  company
  location
  description
  ingredients
  instructions
  bedrooms
  bathrooms
  area_sqft
  markdown
  content_type
  price
  rating
  address
  social_kind
  platform
  handle
  reply_count
  community
  score
  suspect
  warnings
  error_message
].freeze
FETCH_URL_FIELDS =
%i[url final_url canonical_url].freeze

Instance Method Summary collapse

Instance Method Details

#fetch(*urls) ⇒ Object

Raises:

  • (ArgumentError)


57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/fetch_util/cli.rb', line 57

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"
    puts results.map { |result| front_matter_document(result) }.join("\n\n")
  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)


95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/fetch_util/cli.rb', line 95

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)


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

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],
    verbose: options[:verbose_search],
    timeout: options[:timeout]
  ).search(query)

  emit(payload)
end

#versionObject



52
53
54
# File 'lib/fetch_util/cli.rb', line 52

def version
  puts FetchUtil::VERSION
end