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
5719f69a
Commit
5719f69a
authored
Nov 16, 2017
by
Roger Braun
Browse files
MastodonAPI: Stream fixes.
parent
a2d7e0f4
Pipeline
#240
failed with stage
in 1 minute and 50 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
5719f69a
...
...
@@ -24,6 +24,9 @@ def create(to, actor, context, object, additional \\ %{}, published \\ nil, loca
:ok
<-
maybe_federate
(
activity
)
do
if
activity
.
data
[
"type"
]
==
"Create"
and
Enum
.
member?
(
activity
.
data
[
"to"
],
"https://www.w3.org/ns/activitystreams#Public"
)
do
Pleroma
.
Web
.
Streamer
.
stream
(
"public"
,
activity
)
if
local
do
Pleroma
.
Web
.
Streamer
.
stream
(
"public:local"
,
activity
)
end
end
{
:ok
,
activity
}
end
...
...
lib/pleroma/web/mastodon_api/mastodon_socket.ex
View file @
5719f69a
defmodule
Pleroma
.
Web
.
MastodonAPI
.
MastodonSocket
do
use
Phoenix
.
Socket
alias
Pleroma
.
Web
.
OAuth
.
Token
alias
Pleroma
.
{
User
,
Repo
}
transport
:streaming
,
Phoenix
.
Transports
.
WebSocket
.
Raw
,
timeout:
:infinity
# We never receive data.
def
connect
(
params
,
socket
)
do
if
params
[
"stream"
]
==
"public"
do
with
token
when
not
is_nil
(
token
)
<-
params
[
"access_token"
],
%
Token
{
user_id:
user_id
}
<-
Repo
.
get_by
(
Token
,
token:
token
),
%
User
{}
=
user
<-
Repo
.
get
(
User
,
user_id
),
stream
when
stream
in
[
"public"
,
"public:local"
]
<-
params
[
"stream"
]
do
socket
=
socket
|>
assign
(
:topic
,
params
[
"stream"
])
|>
assign
(
:user
,
user
)
Pleroma
.
Web
.
Streamer
.
add_socket
(
params
[
"stream"
],
socket
)
{
:ok
,
socket
}
else
:error
_e
->
:error
end
end
...
...
lib/pleroma/web/streamer.ex
View file @
5719f69a
...
...
@@ -43,7 +43,7 @@ def handle_cast(%{action: :stream, topic: topic, item: item}, topics) do
Enum
.
each
(
topics
[
topic
]
||
[],
fn
(
socket
)
->
json
=
%{
event:
"update"
,
payload:
Pleroma
.
Web
.
MastodonAPI
.
StatusView
.
render
(
"status.json"
,
activity:
item
)
|>
Poison
.
encode!
payload:
Pleroma
.
Web
.
MastodonAPI
.
StatusView
.
render
(
"status.json"
,
activity:
item
,
for:
socket
.
assigns
[
:user
]
)
|>
Poison
.
encode!
}
|>
Poison
.
encode!
send
socket
.
transport_pid
,
{
:text
,
json
}
...
...
Write
Preview
Supports
Markdown
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