include Redisable
SUPPORTED_TYPES = %w(Note Question).freeze
- CONVERTED_TYPES = %w(Image Video Article Page).freeze
+ CONVERTED_TYPES = %w(Image Audio Video Article Page).freeze
def initialize(json, account, **options)
@json = json
private
def process_url
- if equals_or_includes_any?(type, %w(Application Group Organization Person Service))
+ if equals_or_includes_any?(type, ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES)
FetchRemoteAccountService.new.call(atom_url, body, protocol)
- elsif equals_or_includes_any?(type, %w(Note Article Image Video Page Question))
+ elsif equals_or_includes_any?(type, ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES)
FetchRemoteStatusService.new.call(atom_url, body, protocol)
end
end
end
end
+ context 'with Audio object' do
+ let(:object) do
+ {
+ '@context': 'https://www.w3.org/ns/activitystreams',
+ id: "https://#{valid_domain}/@foo/1234",
+ type: 'Audio',
+ name: 'Nyan Cat 10 hours remix',
+ attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
+ url: [
+ {
+ type: 'Link',
+ mimeType: 'application/x-bittorrent',
+ href: "https://#{valid_domain}/12345.torrent",
+ },
+
+ {
+ type: 'Link',
+ mimeType: 'text/html',
+ href: "https://#{valid_domain}/watch?v=12345",
+ },
+ ],
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+
+ expect(status).to_not be_nil
+ expect(status.url).to eq "https://#{valid_domain}/watch?v=12345"
+ expect(strip_tags(status.text)).to eq "Nyan Cat 10 hours remix https://#{valid_domain}/watch?v=12345"
+ end
+ end
+
context 'with wrong id' do
let(:note) do
{