mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Update config with rails app:update Update schema.rb rails db:migrate Add puma Make jobs and models inherit from ApplicationJob and ApplicationRecord Update acts_as_list to 0.9.7 in order to fix "undefined method `sanitize_sql_hash_for_conditions'" error Update web-console to 2.3.0 to fix a 500 internal server error Replace before_filter with before_action Add rails-controller-testing gem Add prepend: :true to protect_from_forgery in ApplicationController to avoid ActionController::InvalidAuthenticityToken exceptions Remove activeuuid Update formtastic to 3.1.5 to fix deprecation warnings and issues with the Input class Update ahoy_matey to 1.6.0 Update cancancan to 2.0.0 to fix issues with malformed sql queries Fix program spec Fix issue with the picture being nil in admin/Organizations#new and #edit and Organizations#show Fix ActiveRecord::Base.raise_in_transactional_callbacks= deprecation warning by removing an unnecessary line in application.rb Fix failing versions specs
54 lines
1.4 KiB
Ruby
54 lines
1.4 KiB
Ruby
class Commercial < ApplicationRecord
|
|
require 'oembed'
|
|
|
|
belongs_to :commercialable, polymorphic: true
|
|
|
|
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }
|
|
|
|
validates :url, presence: true
|
|
validates :url, format: URI::regexp(%w(http https))
|
|
|
|
validate :valid_url
|
|
|
|
def self.render_from_url(url)
|
|
register_provider
|
|
begin
|
|
resource = OEmbed::Providers.get(url, maxwidth: 560, maxheight: 315)
|
|
{ html: resource.html.html_safe }
|
|
rescue StandardError => exception
|
|
{ error: exception.message }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def valid_url
|
|
result = Commercial.render_from_url(url)
|
|
if result[:error]
|
|
errors.add(:base, result[:error])
|
|
end
|
|
end
|
|
|
|
def self.register_provider
|
|
speakerdeck = OEmbed::Provider.new('http://speakerdeck.com/oembed.json')
|
|
speakerdeck << 'https://speakerdeck.com/*'
|
|
speakerdeck << 'http://speakerdeck.com/*'
|
|
|
|
OEmbed::Providers.register(
|
|
OEmbed::Providers::Youtube,
|
|
OEmbed::Providers::Vimeo,
|
|
OEmbed::Providers::Slideshare,
|
|
OEmbed::Providers::Flickr,
|
|
OEmbed::Providers::Instagram,
|
|
speakerdeck
|
|
)
|
|
end
|
|
|
|
def conference_id
|
|
case commercialable_type
|
|
when 'Conference' then commercialable_id
|
|
when 'Event' then Event.find(commercialable_id).program.conference_id
|
|
when 'Venue' then Venue.find(commercialable_id).conference_id
|
|
end
|
|
end
|
|
end
|