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
cc330421
Commit
cc330421
authored
Apr 20, 2017
by
lain
Browse files
Better activities in ostatus.
parent
d23f3e3c
Changes
8
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/ostatus/activity_representer.ex
0 → 100644
View file @
cc330421
defmodule
Pleroma
.
Web
.
OStatus
.
ActivityRepresenter
do
def
to_simple_form
(
activity
,
user
)
do
h
=
fn
(
str
)
->
[
to_charlist
(
str
)]
end
updated_at
=
activity
.
updated_at
|>
NaiveDateTime
.
to_iso8601
inserted_at
=
activity
.
inserted_at
|>
NaiveDateTime
.
to_iso8601
[
{
:"activity:object-type"
,
[
'http://activitystrea.ms/schema/1.0/note'
]},
{
:"activity:verb"
,
[
'http://activitystrea.ms/schema/1.0/post'
]},
{
:id
,
h
.
(
activity
.
data
[
"id"
])},
{
:title
,
[
'New note by
#{
user
.
nickname
}
'
]},
{
:content
,
[
type:
'html'
],
h
.
(
activity
.
data
[
"object"
][
"content"
])},
{
:published
,
h
.
(
inserted_at
)},
{
:updated
,
h
.
(
updated_at
)}
]
end
end
lib/pleroma/web/ostatus/feed_representer.ex
View file @
cc330421
defmodule
Pleroma
.
Web
.
OStatus
.
FeedRepresenter
do
alias
Pleroma
.
Web
.
OStatus
alias
Pleroma
.
Web
.
OStatus
.
UserRepresenter
alias
Pleroma
.
Web
.
OStatus
.
{
UserRepresenter
,
ActivityRepresenter
}
def
to_simple_form
(
user
,
activities
,
users
)
do
most_recent_update
=
List
.
first
(
activities
)
.
updated_at
...
...
@@ -8,7 +8,10 @@ def to_simple_form(user, activities, users) do
h
=
fn
(
str
)
->
[
to_charlist
(
str
)]
end
entries
=
[]
entries
=
Enum
.
map
(
activities
,
fn
(
activity
)
->
{
:entry
,
ActivityRepresenter
.
to_simple_form
(
activity
,
user
)}
end
)
[{
:feed
,
[
xmlns:
'http://www.w3.org/2005/Atom'
,
...
...
@@ -17,10 +20,9 @@ def to_simple_form(user, activities, users) do
{
:id
,
h
.
(
OStatus
.
feed_path
(
user
))},
{
:title
,
[
'
#{
user
.
nickname
}
\'
s timeline'
]},
{
:updated
,
h
.
(
most_recent_update
)},
{
:entries
,
[]},
{
:link
,
[
rel:
'hub'
,
href:
h
.
(
OStatus
.
pubsub_path
)],
[]},
{
:author
,
UserRepresenter
.
to_simple_form
(
user
)}
]
]
++
entries
}]
end
end
lib/pleroma/web/ostatus/ostatus_controller.ex
View file @
cc330421
...
...
@@ -23,4 +23,8 @@ def feed(conn, %{"nickname" => nickname}) do
|>
put_resp_content_type
(
"application/atom+xml"
)
|>
send_resp
(
200
,
response
)
end
def
temp
(
conn
,
params
)
do
IO
.
inspect
(
params
)
end
end
lib/pleroma/web/router.ex
View file @
cc330421
...
...
@@ -58,10 +58,11 @@ def user_fetcher(username) do
plug
:accepts
,
[
"xml"
,
"atom"
]
end
scope
"/
users
"
,
Pleroma
.
Web
do
scope
"/"
,
Pleroma
.
Web
do
pipe_through
:ostatus
get
"/:nickname/feed"
,
OStatus
.
OStatusController
,
:feed
get
"/users/:nickname/feed"
,
OStatus
.
OStatusController
,
:feed
post
"/push/hub"
,
OStatus
.
OStatusController
,
:temp
end
scope
"/.well-known"
,
Pleroma
.
Web
do
...
...
lib/pleroma/web/websub/websub_server_subscription.ex
0 → 100644
View file @
cc330421
defmodule
Pleroma
.
Web
.
Websub
.
WebsubServerSubscription
do
use
Ecto
.
Schema
schema
"websub_server_subscriptions"
do
field
:topic
,
:string
field
:callback
,
:string
field
:secret
,
:string
field
:valid_until
,
:naive_datetime
field
:state
,
:string
end
end
priv/repo/migrations/20170418200143_create_webssub_server_subscription.exs
0 → 100644
View file @
cc330421
defmodule
Pleroma
.
Repo
.
Migrations
.
CreateWebsubServerSubscription
do
use
Ecto
.
Migration
def
change
do
create
table
(
:websub_server_subscriptions
)
do
add
:topic
,
:string
add
:callback
,
:string
add
:secret
,
:string
add
:valid_until
,
:naive_datetime
add
:state
,
:string
timestamps
()
end
end
end
test/web/ostatus/activity_representer_test.exs
0 → 100644
View file @
cc330421
defmodule
Pleroma
.
Web
.
OStatus
.
ActivityRepresenterTest
do
use
Pleroma
.
DataCase
alias
Pleroma
.
Web
.
OStatus
.
ActivityRepresenter
alias
Pleroma
.
User
import
Pleroma
.
Factory
test
"a note activity"
do
note_activity
=
insert
(
:note_activity
)
updated_at
=
note_activity
.
updated_at
|>
NaiveDateTime
.
to_iso8601
inserted_at
=
note_activity
.
inserted_at
|>
NaiveDateTime
.
to_iso8601
user
=
User
.
get_cached_by_ap_id
(
note_activity
.
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>#{note_activity.data["id"]}</id>
<title>New note by #{user.nickname}</title>
<content type="html">#{note_activity.data["object"]["content"]}</content>
<published>#{inserted_at}</published>
<updated>#{updated_at}</updated>
"""
tuple
=
ActivityRepresenter
.
to_simple_form
(
note_activity
,
user
)
res
=
:xmerl
.
export_simple_content
(
tuple
,
:xmerl_xml
)
|>
IO
.
iodata_to_binary
assert
clean
(
res
)
==
clean
(
expected
)
end
defp
clean
(
string
)
do
String
.
replace
(
string
,
~r/\s/
,
""
)
end
end
test/web/ostatus/feed_representer_test.exs
View file @
cc330421
...
...
@@ -2,7 +2,7 @@ defmodule Pleroma.Web.OStatus.FeedRepresenterTest do
use
Pleroma
.
DataCase
import
Pleroma
.
Factory
alias
Pleroma
.
User
alias
Pleroma
.
Web
.
OStatus
.
{
FeedRepresenter
,
UserRepresenter
}
alias
Pleroma
.
Web
.
OStatus
.
{
FeedRepresenter
,
UserRepresenter
,
ActivityRepresenter
}
alias
Pleroma
.
Web
.
OStatus
test
"returns a feed of the last 20 items of the user"
do
...
...
@@ -18,16 +18,21 @@ test "returns a feed of the last 20 items of the user" do
user_xml
=
UserRepresenter
.
to_simple_form
(
user
)
|>
:xmerl
.
export_simple_content
(
:xmerl_xml
)
entry_xml
=
ActivityRepresenter
.
to_simple_form
(
note_activity
,
user
)
|>
:xmerl
.
export_simple_content
(
:xmerl_xml
)
expected
=
"""
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/">
<id>#{OStatus.feed_path(user)}</id>
<title>#{user.nickname}'s timeline</title>
<updated>#{most_recent_update}</updated>
<entries />
<link rel="hub" href="#{OStatus.pubsub_path}" />
<author>
#{user_xml}
</author>
<entry>
#{entry_xml}
</entry>
</feed>
"""
assert
clean
(
res
)
==
clean
(
expected
)
...
...
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