discourse/lib/onebox/engine/google_play_app_onebox.rb

45 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module Onebox
module Engine
class GooglePlayAppOnebox
include Engine
include LayoutSupport
include HTML
DEFAULTS = { MAX_DESCRIPTION_CHARS: 500 }
matches_regexp(%r{^https?://play\.(?:(?:\w)+\.)?(google)\.com(?:/)?/store/apps/})
always_https
private
def data
price =
begin
raw.css("meta[itemprop=price]").first["content"]
rescue StandardError
"Free"
end
{
link: link,
title:
raw.css("meta[property='og:title']").first["content"].gsub(
" - Apps on Google Play",
"",
),
image:
::Onebox::Helpers.normalize_url_for_output(
raw.css("meta[property='og:image']").first["content"],
),
description:
raw.css("meta[name=description]").first["content"][
0..DEFAULTS[:MAX_DESCRIPTION_CHARS]
].chop + "...",
price: price == "0" ? "Free" : price,
}
end
end
end
end