mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-26 07:06:22 +00:00
53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'distributed_press/v1/social/client'
|
||
|
|
||
|
# Gestiona la Social Inbox de un sitio
|
||
|
class SocialInbox
|
||
|
# @return [Site]
|
||
|
attr_reader :site
|
||
|
|
||
|
# @param :site [Site]
|
||
|
def initialize(site:)
|
||
|
@site = site
|
||
|
end
|
||
|
|
||
|
# @return [String]
|
||
|
def actor
|
||
|
@actor ||=
|
||
|
begin
|
||
|
user = site.config.dig('activity_pub', 'username')
|
||
|
user ||= hostname.split('.', 2).first
|
||
|
|
||
|
"@#{user}@#{hostname}"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# @return [DistributedPress::V1::Social::Client]
|
||
|
def client
|
||
|
@client ||= DistributedPress::V1::Social::Client.new(
|
||
|
url: site.config.dig('activity_pub', 'url'),
|
||
|
public_key_url: public_key_url,
|
||
|
private_key_pem: site.private_key_pem,
|
||
|
logger: Rails.logger,
|
||
|
cache_store: :redis
|
||
|
)
|
||
|
end
|
||
|
|
||
|
# @return [String]
|
||
|
def public_key_url
|
||
|
@public_key_url ||= URI("https://#{hostname}").tap do |uri|
|
||
|
uri.path = '/about.jsonld'
|
||
|
uri.fragment = 'main-key'
|
||
|
end.to_s
|
||
|
end
|
||
|
|
||
|
def hostname
|
||
|
@hostname ||=
|
||
|
begin
|
||
|
host = site.config.dig('activity_pub', 'hostname')
|
||
|
host ||= site.hostname
|
||
|
end
|
||
|
end
|
||
|
end
|