# frozen_string_literal: true module Onebox module Engine class GoogleDocsOnebox include Engine include StandardEmbed include LayoutSupport SUPPORTED_ENDPOINTS = %w(spreadsheets document forms presentation) SHORT_TYPES = { spreadsheets: :sheets, document: :docs, presentation: :slides, forms: :forms, } matches_regexp(/^(https?:)?\/\/(docs\.google\.com)\/(?(#{SUPPORTED_ENDPOINTS.join('|')}))\/d\/((?[\w-]*)).+$/) always_https private def data og_data = get_opengraph short_type = SHORT_TYPES[match[:endpoint].to_sym] description = if Onebox::Helpers.blank?(og_data.description) "This #{short_type.to_s.chop.capitalize} is private" else Onebox::Helpers.truncate(og_data.description, 250) end { link: link, title: og_data.title || "Google #{short_type.to_s.capitalize}", description: description, type: short_type } end def match @match ||= @url.match(@@matcher) end end end end