require 'manifique' module AppCatalogManager class FetchMetadata < AppCatalogManagerService def initialize(app) @app = app end def call agent = Manifique::Agent.new(url: @app.url) metadata = agent.fetch_metadata @app.name = metadata.name [:name, :short_name, :description, :theme_color, :background_color, :display, :start_url, :scope, :share_target].each do |prop| @app.metadata[prop] = metadata.send(prop) if prop end rescue Manifique::Error => e msg = "Fetching web app manifest failed for #{e.url}: #{e.type}" Rails.logger.warn(msg) Sentry.capture_message(msg) if Setting.sentry_enabled? false end end end