federated_network_updater.rb 1.08 KB
module FederatedNetworkUpdater
  require 'json'
  require 'net/http'
  require './app/models/federated_network'

  def self.import_json
    source = 'http://directory.noosfero.org/all.json'
    begin
      resp = Net::HTTP.get_response(URI.parse(source))
    rescue Exception => ex
      Rails.logger.error "Import Federated Networks Error: #{ex}"
    end
    JSON.parse(resp.body)
  end

  def self.process_data
    data = import_json

    if data.key?('sites')
      data['sites'].each do |site|
        if site.key?('name') && site.key?('url') && site.key?('id')
          federated_network = FederatedNetwork.find_or_create_by(identifier: site['id'])
          federated_network.update(name: site['name'],
                                   url: site['url'],
                                   screenshot: site['screnshot'],
                                   thumbnail: site['thumbnail'])
        else
          Rails.logger.error 'Federated network JSON has site without name or url'
        end
      end
    else
      Rails.logger.error 'Federated network JSON has no sites key'
    end
  end
end