Class: BraveSearch::Exporter

Inherits:
Object
  • Object
show all
Defined in:
lib/brave_search/exporter.rb

Direct Known Subclasses

BraveSearch::Exporters::Base

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.for(format) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/brave_search/exporter.rb', line 5

def self.for(format)
  case format
  when :json
    require_relative "exporters/json"
    Exporters::Json.new
  when :csv
    require_relative "exporters/csv"
    Exporters::Csv.new
  when :xlsx
    require_relative "exporters/xlsx"
    Exporters::Xlsx.new
  else
    raise ArgumentError, "Unknown export format: #{format}"
  end
end

Instance Method Details

#export(results) ⇒ Object

Raises:

  • (NotImplementedError)


21
22
23
# File 'lib/brave_search/exporter.rb', line 21

def export(results)
  raise NotImplementedError, "Subclasses must implement #export"
end

#export_to_storage(results, storage:, key:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/brave_search/exporter.rb', line 25

def export_to_storage(results, storage:, key:)
  export_result = export(results)
  upload_result = storage.upload(export_result[:content], key: key)

  {
    key: key,
    url: upload_result[:url],
    size: export_result[:size],
    format: format_name
  }
end