class TaxonReporter::EolDataSource
Constants
- BAD_PROVIDERS
- DATA_SOURCE_NAME
- HE_DATA
- PAGES_DATA
Public Class Methods
add_children(results)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 48 def self.add_children(results) children = eol_children(filter_hes(results["he_ids"])) results["children"] = children if children.length > 0 results end
add_field(field_name)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 66 def self.add_field(field_name) @@fields[field_name] = TaxonReporter::Field.new(DATA_SOURCE_NAME, field_name) unless @@fields.member?(field_name) @@fields[field_name] end
eol_children(he_ids)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 89 def self.eol_children(he_ids) result = Set.new if he_ids he_ids.each do |he_id| result += (get_api_results(hierarchy_entries_url(he_id), HE_DATA)["children"] || []) end end result.sort end
filter_hes(hes_with_provider)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 75 def self.filter_hes(hes_with_provider) if hes_with_provider result = Set.new hes_with_provider.each do |he, provider| result << he unless BAD_PROVIDERS.member?(provider) end result end end
get_eol_ids_from_name(name)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 20 def self.get_eol_ids_from_name(name) # Set of ids get_api_result(search_url(name), ["results", "id"]) end
hierarchy_entries_url(id)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 99 def self.hierarchy_entries_url(id); "http://eol.org/api/hierarchy_entries/#{id}.json?common_names=false&synonyms=false&cache_ttl=86400"; end
pages_url(id)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 54 def self.pages_url(id) "http://eol.org/api/pages/#{id}.json?images=0&videos=0&sounds=0&maps=0&text=0&iucn=false&details=false&common_names=false&synonyms=false&references=false&cache_ttl=86400" end
records(id)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 40 def self.records(id) result = [] add_children(get_api_results(pages_url(id), PAGES_DATA)).each do |k, v| result.push(TaxonReporter::Record.new(add_field(k), v)) end result end
search_url(name)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 24 def self.search_url(name); "http://eol.org/api/search/#{URI::escape(name)}.json?exact=1&cache_ttl=86400"; end
taxons_from_id(id)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 26 def self.taxons_from_id(id) result = [] records = self.records(id) if records.length > 0 taxon = TaxonReporter::Taxon.new(self.records(id)) result << taxon children = taxon.values(@@fields['children']) if children children.each {|c| result += taxons_from_id(c)} end end result end
taxons_from_name(name)
click to toggle source
# File lib/taxon_reporter/eol_data_source.rb, line 9 def self.taxons_from_name(name) result = [] ids = self.get_eol_ids_from_name(name) if ids ids.each do |id| result += self.taxons_from_id(id) end end result end