Sha256: 8313901bd33bd29a8e5af68267bf940f5c9a85266862cc9b2ae5bcf0a1902f55

Contents?: true

Size: 1.2 KB

Versions: 10

Compression:

Stored size: 1.2 KB

Contents

class Dataset::Adaptors::Iqvoc::AlphabeticalSearchAdaptor < Dataset::Adaptors::Iqvoc::SearchAdaptor
  def search(prefix, locale)
    fetch_results("/#{locale}/alphabetical_concepts/#{prefix}.html")
    @results
  end

  def fetch_results(url, params = {})
    begin
      response = @conn.get(url, params)
      @results ||= []
      @results += extract_results(response.body)
      while more = @doc.at_css('a[rel=next]')
        fetch_results(more[:href], {})
      end
    rescue Faraday::Error::ConnectionFailed,
      Faraday::Error::ResourceNotFound,
      Faraday::Error::TimeoutError => e
        Rails.logger.warn("HTTP error while querying remote source #{url}: #{e.message}")
        return nil
    end
  end

  def extract_results(html)
    @doc = Nokogiri::HTML(html)

    @doc.css('.concept-item').map do |element|
      link = element.at_css('.concept-item-link')
      label, path = link.text, link['data-resource-path'] # href

      options = {
        definition: element.at_css('.concept-item-definition').try(:content),
        definition_language: element.at_css('.concept-item-definition').try(:[], :lang)
      }

      result = AlphabeticalSearchResultRemote.new(url, path, label, options)
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
iqvoc-4.8.2 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.8.1 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.8.0 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.7.0 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.6.1 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.5.2 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.6.0 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.5.1 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.5.0 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb
iqvoc-4.4.0 app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb