class BlacklightInternetArchive::SitesEntityProcessor

extract and convert individual results from response

Public Class Methods

new() click to toggle source
# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 13
def initialize

  @metadata_fields = %w[meta_Creator meta_Coverage meta_Subject meta_Language meta_Collector meta_Title]
  @linkable_fields = {  'meta_Title' => 'allURL', 'url' => 'allURL', 'numCaptures' => 'allURL',
                        'numVideos' => 'seedVideosUrl' }
end

Public Instance Methods

compose_url(url_arrays) click to toggle source
# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 106
def compose_url(url_arrays)
  new_url = ''
  url_arrays[0].each do |param_string|
    new_url = if new_url == ''
      "#{param_string}&"
    else
      "#{new_url}&#{param_string}&"
    end
  end
  url_arrays[1].each do |fps|
    new_url = "#{new_url}#{fps}&"
  end
  "?#{new_url.chomp('&')}"
end
convert_ia_facet_url(ia_facet_url) click to toggle source

translate ia facet url into blacklight facet syntax

# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 87
def convert_ia_facet_url(ia_facet_url)
  ifu_hash = CGI.parse(ia_facet_url.tr('?', ''))
  url_arrays = prepare_url_params(ifu_hash, [], [])
  compose_url(url_arrays)
end
convert_ia_facet_url_param(value) click to toggle source
# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 121
def convert_ia_facet_url_param(value)
  ifu_arr = value.split(':')
  "f[#{ifu_arr[0]}][]=#{ifu_arr[1]}"
end
prepare_url_params(facet_hash, facet_url_arr, new_url_arr) click to toggle source
# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 93
def prepare_url_params(facet_hash, facet_url_arr, new_url_arr)
  facet_hash.each do |k, v|
    if k == 'fc'
      v.each do |v_fc|
        facet_url_arr << convert_ia_facet_url_param(v_fc)
      end
    else
      new_url_arr << "#{k}=#{v[0]}"
    end
  end
  [new_url_arr, facet_url_arr]
end
reformat_entity(entity, searched_facets, base_url) click to toggle source
# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 34
def reformat_entity(entity, searched_facets, base_url)
  entity_clone = entity.clone
  entity.each do |entity_key, entity_val|
    if entity_key == 'metadata'
      entity_clone = facet_link_metadata(entity_val, entity_clone, searched_facets)
    end
    entity_clone = set_linked_fields(entity_clone, base_url)
  end
  # these fields are not under the metadata node and not handled by process_entities
  entity_clone['linked_websiteGroup'] = link_faceted_results_data('websiteGroup', [entity['websiteGroup']], searched_facets)
  val_url = entity_clone['allURL']
  val_url = "#{base_url}#{val_url}" if val_url.start_with?('?')
  entity_clone['linked_Captures'] = linked_val = make_link('View Site Captures on Wayback.org', val_url)
  entity_clone
end
run(response_json, base_url) click to toggle source
# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 20
def run(response_json, base_url)
  raise ArgumentError 'No entities in response.' unless response_json['results']['entities']
  raise ArgumentError 'Base url required.' unless base_url

  entities = response_json['results']['entities']
  entities_clone = entities.clone
  entities.each do |entity|
    next unless entity['isSeed']
    entities_clone[entities.index(entity)] = reformat_entity(entity, response_json['results']['searchedFacets'], base_url)
  end
  entities_clone
end
set_linked_fields(e_clone, base_url) click to toggle source
# File lib/blacklight_internet_archive/sites_entity_processor.rb, line 60
def set_linked_fields(e_clone, base_url)
  @linkable_fields.each do |l, l_url|
    val = e_clone[l]
    val_url = e_clone[l_url]
    val_url = "#{base_url}#{val_url}" if val_url.start_with?('?')
    linked_val = make_link(val, val_url)
    e_clone["linked_#{l}"] = linked_val
  end
  e_clone
end