Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
d937a8e6
Commit
d937a8e6
authored
Apr 30, 2017
by
lain
Browse files
Add thr:in-reply-to to ostatus representer.
parent
9d7c3190
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/ostatus/activity_representer.ex
View file @
d937a8e6
defmodule
Pleroma
.
Web
.
OStatus
.
ActivityRepresenter
do
alias
Pleroma
.
Activity
require
Logger
defp
get_in_reply_to
(%{
"object"
=>
%{
"inReplyTo"
=>
in_reply_to
}})
do
with
%
Activity
{
data:
%{
"id"
=>
id
}}
<-
Activity
.
get_create_activity_by_object_ap_id
(
in_reply_to
)
do
[{
:"thr:in-reply-to"
,
[
ref:
to_charlist
(
id
)],
[]}]
else
_e
->
Logger
.
debug
(
"Couldn't find replied-to activity:"
)
Logger
.
debug
(
in_reply_to
)
[]
end
end
defp
get_in_reply_to
(
_
),
do
:
[]
def
to_simple_form
(%{
data:
%{
"object"
=>
%{
"type"
=>
"Note"
}}}
=
activity
,
user
)
do
h
=
fn
(
str
)
->
[
to_charlist
(
str
)]
end
...
...
@@ -12,6 +27,8 @@ def to_simple_form(%{data: %{"object" => %{"type" => "Note"}}} = activity, user)
{
:link
,
[
rel:
'enclosure'
,
href:
to_charlist
(
url
[
"href"
]),
type:
to_charlist
(
url
[
"mediaType"
])],
[]}
end
)
in_reply_to
=
get_in_reply_to
(
activity
.
data
)
[
{
:"activity:object-type"
,
[
'http://activitystrea.ms/schema/1.0/note'
]},
{
:"activity:verb"
,
[
'http://activitystrea.ms/schema/1.0/post'
]},
...
...
@@ -22,7 +39,7 @@ def to_simple_form(%{data: %{"object" => %{"type" => "Note"}}} = activity, user)
{
:updated
,
h
.
(
updated_at
)},
{
:"ostatus:conversation"
,
[],
h
.
(
activity
.
data
[
"context"
])},
{
:link
,
[
href:
h
.
(
activity
.
data
[
"context"
]),
rel:
'ostatus:conversation'
],
[]}
]
++
attachments
]
++
attachments
++
in_reply_to
end
def
to_simple_form
(
_
,
_
),
do
:
nil
...
...
lib/pleroma/web/ostatus/feed_representer.ex
View file @
d937a8e6
...
...
@@ -16,6 +16,7 @@ def to_simple_form(user, activities, users) do
[{
:feed
,
[
xmlns:
'http://www.w3.org/2005/Atom'
,
"xmlns:thr"
:
'http://purl.org/syndication/thread/1.0'
,
"xmlns:activity"
:
'http://activitystrea.ms/spec/1.0/'
,
"xmlns:poco"
:
'http://portablecontacts.net/spec/1.0'
,
"xmlns:ostatus"
:
'http://ostatus.org/schema/1.0'
...
...
test/web/ostatus/activity_representer_test.exs
View file @
d937a8e6
...
...
@@ -34,6 +34,42 @@ test "a note activity" do
assert
clean
(
res
)
==
clean
(
expected
)
end
test
"a reply note"
do
note
=
insert
(
:note_activity
)
answer
=
insert
(
:note_activity
)
object
=
answer
.
data
[
"object"
]
object
=
Map
.
put
(
object
,
"inReplyTo"
,
note
.
data
[
"object"
][
"id"
])
data
=
%{
answer
.
data
|
"object"
=>
object
}
answer
=
%{
answer
|
data:
data
}
updated_at
=
answer
.
updated_at
|>
NaiveDateTime
.
to_iso8601
inserted_at
=
answer
.
inserted_at
|>
NaiveDateTime
.
to_iso8601
user
=
User
.
get_cached_by_ap_id
(
answer
.
data
[
"actor"
])
expected
=
"""
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<id>#{answer.data["id"]}</id>
<title>New note by #{user.nickname}</title>
<content type="html">#{answer.data["object"]["content"]}</content>
<published>#{inserted_at}</published>
<updated>#{updated_at}</updated>
<ostatus:conversation>#{answer.data["context"]}</ostatus:conversation>
<link href="#{answer.data["context"]}" rel="ostatus:conversation" />
<thr:in-reply-to ref="#{note.data["id"]}" />
"""
tuple
=
ActivityRepresenter
.
to_simple_form
(
answer
,
user
)
res
=
:xmerl
.
export_simple_content
(
tuple
,
:xmerl_xml
)
|>
IO
.
iodata_to_binary
assert
clean
(
res
)
==
clean
(
expected
)
end
test
"an unknown activity"
do
tuple
=
ActivityRepresenter
.
to_simple_form
(%
Activity
{},
nil
)
assert
is_nil
(
tuple
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment