diff options
author | Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> | 2017-07-18 23:39:47 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-07-18 16:39:47 +0200 |
commit | 89b988cab5e4729bd80400a2b25ec2b790ebd18d (patch) | |
tree | 44d8596f508876c7ad17fa40c3212abfbe4b3c3c /app/lib/ostatus/activity/base.rb | |
parent | 4d42a389540690b32886f2a38af1f86aee617d27 (diff) |
Introduce Ostatus name space (#4164)
* Wrap methods of ProcessFeedService::ProcessEntry in classes This is a change same with 425acecfdb15093a265b191120fb2d4e4c4135c4, except that it has the following changes: * Revert irrelevant change in find_or_create_conversation * Fix error handling for RemoteActivity * Introduce Ostatus name space
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 |