# frozen_string_literal: true require 'distributed_press/v1/social/client' class Site # Agrega soporte para Social Distributed Press en los sitios module SocialDistributedPress extend ActiveSupport::Concern included do has_encrypted :private_key_pem has_many :activity_pubs has_many :instance_moderations has_many :actor_moderations has_many :fediblock_states has_many :instances, through: :instance_moderations before_save :generate_private_key_pem!, unless: :private_key_pem? # @return [SocialInbox] def social_inbox @social_inbox ||= SocialInbox.new(site: self) end private # Genera la llave privada y la almacena # # @return [nil] def generate_private_key_pem! self.private_key_pem ||= DistributedPress::V1::Social::Client.new( public_key_url: nil, key_size: 2048 ).private_key.export end end end end