diff options
author | Ondřej Hruška <ondra@ondrovo.com> | 2017-07-18 18:58:47 +0200 |
---|---|---|
committer | Ondřej Hruška <ondra@ondrovo.com> | 2017-07-18 18:58:47 +0200 |
commit | d69fa9e1f40124279ec9d772e5f54d1e11724e2d (patch) | |
tree | ef0462e5fcc8cc7962ef42d80f7dd520a574a7c5 /app/lib/ostatus/activity/base.rb | |
parent | c727eae4412ac9e4f1bafdc68fe89dcd46d602ca (diff) | |
parent | 0b4006fc47dcd3d57ffdd0b95c95ad4c40a4918f (diff) |
Merge changes from upstream with the CSS reload fix
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 |