openaustralia/publicwhip

View on GitHub
app/lib/data_loader/people.rb

Summary

Maintainability
A
1 hr
Test Coverage
# frozen_string_literal: true

require "mechanize"

module DataLoader
  class People
    def self.member_to_person
      @member_to_person ||= load_people
    end

    # Try to load any people images that are currently missing
    def self.load_missing_images!
      Person.where(small_image_url: nil).find_each do |person|
        Rails.logger.info "Checking small photo for person #{person.id}..."
        url = "https://www.openaustralia.org.au/images/mps/#{person.id}.jpg"
        person.update(small_image_url: url) if CheckResourceExists.call(url)
      end
      Person.where(large_image_url: nil).find_each do |person|
        Rails.logger.info "Checking large photo for person #{person.id}..."
        url = "https://www.openaustralia.org.au/images/mpsL/#{person.id}.jpg"
        person.update(large_image_url: url) if CheckResourceExists.call(url)
      end
      Person.where(extra_large_image_url: nil).find_each do |person|
        Rails.logger.info "Checking extra large photo for person #{person.id}..."
        url = "https://www.openaustralia.org.au/images/mpsXL/#{person.id}.jpg"
        person.update(extra_large_image_url: url) if CheckResourceExists.call(url)
      end
    end

    # people.xml
    def self.load_people
      agent = Mechanize.new
      people_xml = agent.get "#{Settings.xml_data_base_url}members/people.xml"
      member_to_person = {}
      people_xml.search(:person).each do |person|
        person.search(:office).each do |office|
          member_to_person[office[:id]] = person[:id]
        end
      end
      member_to_person
    end
  end
end