Class: Oembed::FaqProvider

Inherits:
Object
  • Object
show all
Defined in:
app/services/oembed/faq_provider.rb

Defined Under Namespace

Classes: FaqNotFoundError

Instance Method Summary collapse

Instance Method Details

#get(options = {}) ⇒ Hash

Get rendered FAQ HTML

Parameters:

  • options (Hash) (defaults to: {})

    Options hash

Options Hash (options):

  • :ids (Array<Integer>)

    FAQ IDs to render

  • :title (String)

    Custom section title (optional)

  • :sort (String)

    Sort option: 'popularity' or nil for manual order

  • :embedded_asset_uuid (String)

    EmbeddedAsset UUID for tracking (optional)

Returns:

  • (Hash)

    oEmbed-like response with :html, :type, :provider_name, etc.

Raises:



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'app/services/oembed/faq_provider.rb', line 32

def get(options = {})
  ids = Array(options[:ids]).map(&:to_i).reject(&:zero?)
  title = options[:title].presence
  sort = options[:sort].presence
  embedded_asset_uuid = options[:embedded_asset_uuid].presence

  raise FaqNotFoundError, 'No FAQ IDs provided' if ids.empty?

  faqs = fetch_faqs(ids, sort)
  raise FaqNotFoundError, "FAQs not found: #{ids.join(', ')}" if faqs.empty?

  build_response(faqs, ids, title, sort, embedded_asset_uuid: embedded_asset_uuid)
end