def activitypub_ready?
!@webfinger.link('self').nil? &&
- ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(@webfinger.link('self').type)
+ ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(@webfinger.link('self').type) &&
+ actor_json['inbox'].present?
end
def handle_ostatus
end
def handle_activitypub
- json = fetch_resource(actor_url)
+ return if actor_json.nil?
- return unless supported_context?(json) && json['type'] == 'Person'
-
- @account = ActivityPub::ProcessAccountService.new.call(@username, @domain, json)
+ @account = ActivityPub::ProcessAccountService.new.call(@username, @domain, actor_json)
rescue Oj::ParseError
nil
end
@atom_body = response.to_s
end
+ def actor_json
+ return @actor_json if defined?(@actor_json)
+
+ json = fetch_resource(actor_url)
+ @actor_json = supported_context?(json) && json['type'] == 'Person' ? json : nil
+ end
+
def atom
return @atom if defined?(@atom)
@atom = Nokogiri::XML(atom_body)