Files
adamantium/slices/admin/commands/bookmarks/cache.rb

26 lines
672 B
Ruby

require "readability"
require "down"
module Admin
module Commands
module Bookmarks
class Cache
include Dry::Monads[:result]
include Deps["repos.bookmark_repo"]
def call(bookmark_id:)
bookmark = bookmark_repo.fetch(id: bookmark_id)
bookmark.url
tempfile = Down.download(bookmark.url)
content = Readability::Document.new(tempfile.read, tags: %w[div section header p h1 h2 h3 h4 h5 h6 ol ul li table td tr thead tbody a code pre], attributes: %w[href]).content
bookmark_repo.update(id: bookmark_id, cached_content: content)
Success()
end
end
end
end
end