diff options
Diffstat (limited to 'app/lib/ostatus/activity/base.rb')
-rw-r--r-- | app/lib/ostatus/activity/base.rb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/app/lib/ostatus/activity/base.rb b/app/lib/ostatus/activity/base.rb new file mode 100644 index 000000000..f528815b3 --- /dev/null +++ b/app/lib/ostatus/activity/base.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +class Ostatus::Activity::Base + def initialize(xml, account = nil) + @xml = xml + @account = account + end + + def status? + [:activity, :note, :comment].include?(type) + end + + def verb + raw = @xml.at_xpath('./activity:verb', activity: TagManager::AS_XMLNS).content + TagManager::VERBS.key(raw) + rescue + :post + end + + def type + raw = @xml.at_xpath('./activity:object-type', activity: TagManager::AS_XMLNS).content + TagManager::TYPES.key(raw) + rescue + :activity + end + + def id + @xml.at_xpath('./xmlns:id', xmlns: TagManager::XMLNS).content + end + + def url + link = @xml.at_xpath('./xmlns:link[@rel="alternate"]', xmlns: TagManager::XMLNS) + link.nil? ? nil : link['href'] + end + + private + + def find_status(uri) + if TagManager.instance.local_id?(uri) + local_id = TagManager.instance.unique_tag_to_local_id(uri, 'Status') + return Status.find_by(id: local_id) + end + + Status.find_by(uri: uri) + end + + def redis + Redis.current + end +end |