Skip to content
GitLab
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
5c409861
Commit
5c409861
authored
Dec 04, 2017
by
lain
Browse files
Basic backend chat.
parent
d08a34e8
Changes
4
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/channels/user_socket.ex
View file @
5c409861
defmodule
Pleroma
.
Web
.
UserSocket
do
use
Phoenix
.
Socket
alias
Pleroma
.
User
alias
Comeonin
.
Pbkdf2
## Channels
# channel "room:*", Pleroma.Web.RoomChannel
channel
"chat:*"
,
Pleroma
.
Web
.
ChatChannel
## Transports
transport
:websocket
,
Phoenix
.
Transports
.
WebSocket
...
...
@@ -19,8 +22,13 @@ defmodule Pleroma.Web.UserSocket do
#
# See `Phoenix.Token` documentation for examples in
# performing token verification on connect.
def
connect
(
_params
,
socket
)
do
{
:ok
,
socket
}
def
connect
(%{
"token"
=>
token
},
socket
)
do
with
{
:ok
,
user_id
}
<-
Phoenix
.
Token
.
verify
(
socket
,
"user socket"
,
token
,
max_age:
84600
),
%
User
{}
=
user
<-
Pleroma
.
Repo
.
get
(
User
,
user_id
)
do
{
:ok
,
assign
(
socket
,
:user
,
user
)}
else
_e
->
:error
end
end
# Socket id's are topics that allow you to identify all sockets for a given user:
...
...
lib/pleroma/web/chat_channel.ex
0 → 100644
View file @
5c409861
defmodule
Pleroma
.
Web
.
ChatChannel
do
use
Phoenix
.
Channel
def
join
(
"chat:public"
,
_message
,
socket
)
do
{
:ok
,
socket
}
end
def
handle_in
(
"new_msg"
,
%{
"text"
=>
text
},
socket
)
do
author
=
socket
.
assigns
[
:user
]
author
=
Pleroma
.
Web
.
MastodonAPI
.
AccountView
.
render
(
"account.json"
,
user:
author
)
broadcast!
socket
,
"new_msg"
,
%{
text:
text
,
author:
author
}
{
:noreply
,
socket
}
end
end
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
5c409861
...
...
@@ -10,7 +10,8 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
require
Logger
def
verify_credentials
(%{
assigns:
%{
user:
user
}}
=
conn
,
_params
)
do
render
(
conn
,
UserView
,
"show.json"
,
%{
user:
user
})
token
=
Phoenix
.
Token
.
sign
(
conn
,
"user socket"
,
user
.
id
)
render
(
conn
,
UserView
,
"show.json"
,
%{
user:
user
,
token:
token
})
end
def
status_update
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"status"
=>
_
}
=
status_data
)
do
...
...
lib/pleroma/web/twitter_api/views/user_view.ex
View file @
5c409861
...
...
@@ -25,7 +25,7 @@ def render("user.json", %{user: user = %User{}} = assigns) do
user_info
=
User
.
get_cached_user_info
(
user
)
%{
data
=
%{
"created_at"
=>
user
.
inserted_at
|>
Utils
.
format_naive_asctime
,
"description"
=>
HtmlSanitizeEx
.
strip_tags
(
user
.
bio
),
"favourites_count"
=>
0
,
...
...
@@ -47,6 +47,12 @@ def render("user.json", %{user: user = %User{}} = assigns) do
"cover_photo"
=>
image_url
(
user
.
info
[
"banner"
]),
"background_image"
=>
image_url
(
user
.
info
[
"background"
])
}
if
assigns
[
:token
]
do
Map
.
put
(
data
,
"token"
,
assigns
[
:token
])
else
data
end
end
def
render
(
"short.json"
,
%{
user:
%
User
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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