Sha256: 5a9d57e8afe9a78af7fbcf31d7817fe2af14ba88506da143e9b8f589e7505a5b
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
module Calagator class Source < ActiveRecord::Base class Importer < Struct.new(:source, :events) def initialize params self.source = Source.find_or_create_from(params) end def import return unless source.valid? self.events = source.create_events! self.events.present? rescue Source::Parser::NotFound add_error "No events found at remote site. Is the event identifier in the URL correct?" rescue Source::Parser::HttpAuthenticationRequiredError add_error "Couldn't import events, remote site requires authentication." rescue OpenURI::HTTPError add_error "Couldn't download events, remote site may be experiencing connectivity problems." rescue Errno::EHOSTUNREACH add_error "Couldn't connect to remote site." rescue SocketError add_error "Couldn't find IP address for remote site. Is the URL correct?" rescue Exception => e add_error "Unknown error: #{e}" end def failure_message if events.nil? "Unable to import: #{source.errors.full_messages.to_sentence}" else "Unable to find any upcoming events to import from this source" end end private def add_error message source.errors.add :base, message nil end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
calagator-0.0.1.pre1 | app/models/calagator/source/importer.rb |