27 lines
713 B
Ruby
27 lines
713 B
Ruby
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
|