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
b9cdf6d3
Commit
b9cdf6d3
authored
Apr 22, 2019
by
minibikini
Committed by
kaniini
Apr 22, 2019
Browse files
Use `User.get_cached*` everywhere
parent
05862ded
Changes
42
Hide whitespace changes
Inline
Side-by-side
lib/mix/tasks/pleroma/user.ex
View file @
b9cdf6d3
...
...
@@ -162,7 +162,7 @@ def run(["new", nickname, email | rest]) do
def
run
([
"rm"
,
nickname
])
do
Common
.
start_pleroma
()
with
%
User
{
local:
true
}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{
local:
true
}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
User
.
delete
(
user
)
Mix
.
shell
()
.
info
(
"User
#{
nickname
}
deleted."
)
else
...
...
@@ -174,7 +174,7 @@ def run(["rm", nickname]) do
def
run
([
"toggle_activated"
,
nickname
])
do
Common
.
start_pleroma
()
with
%
User
{}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
{
:ok
,
user
}
=
User
.
deactivate
(
user
,
!user
.
info
.
deactivated
)
Mix
.
shell
()
.
info
(
...
...
@@ -189,7 +189,7 @@ def run(["toggle_activated", nickname]) do
def
run
([
"reset_password"
,
nickname
])
do
Common
.
start_pleroma
()
with
%
User
{
local:
true
}
=
user
<-
User
.
get_by_nickname
(
nickname
),
with
%
User
{
local:
true
}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
),
{
:ok
,
token
}
<-
Pleroma
.
PasswordResetToken
.
create_token
(
user
)
do
Mix
.
shell
()
.
info
(
"Generated password reset token for
#{
user
.
nickname
}
"
)
...
...
@@ -211,14 +211,14 @@ def run(["reset_password", nickname]) do
def
run
([
"unsubscribe"
,
nickname
])
do
Common
.
start_pleroma
()
with
%
User
{}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
Mix
.
shell
()
.
info
(
"Deactivating
#{
user
.
nickname
}
"
)
User
.
deactivate
(
user
)
{
:ok
,
friends
}
=
User
.
get_friends
(
user
)
Enum
.
each
(
friends
,
fn
friend
->
user
=
User
.
get_by_id
(
user
.
id
)
user
=
User
.
get_
cached_
by_id
(
user
.
id
)
Mix
.
shell
()
.
info
(
"Unsubscribing
#{
friend
.
nickname
}
from
#{
user
.
nickname
}
"
)
User
.
unfollow
(
user
,
friend
)
...
...
@@ -226,7 +226,7 @@ def run(["unsubscribe", nickname]) do
:timer
.
sleep
(
500
)
user
=
User
.
get_by_id
(
user
.
id
)
user
=
User
.
get_
cached_
by_id
(
user
.
id
)
if
Enum
.
empty?
(
user
.
following
)
do
Mix
.
shell
()
.
info
(
"Successfully unsubscribed all followers from
#{
user
.
nickname
}
"
)
...
...
@@ -250,7 +250,7 @@ def run(["set", nickname | rest]) do
]
)
with
%
User
{
local:
true
}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{
local:
true
}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
user
=
case
Keyword
.
get
(
options
,
:moderator
)
do
nil
->
user
...
...
@@ -277,7 +277,7 @@ def run(["set", nickname | rest]) do
def
run
([
"tag"
,
nickname
|
tags
])
do
Common
.
start_pleroma
()
with
%
User
{}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
user
=
user
|>
User
.
tag
(
tags
)
Mix
.
shell
()
.
info
(
"Tags of
#{
user
.
nickname
}
:
#{
inspect
(
tags
)
}
"
)
...
...
@@ -290,7 +290,7 @@ def run(["tag", nickname | tags]) do
def
run
([
"untag"
,
nickname
|
tags
])
do
Common
.
start_pleroma
()
with
%
User
{}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
user
=
user
|>
User
.
untag
(
tags
)
Mix
.
shell
()
.
info
(
"Tags of
#{
user
.
nickname
}
:
#{
inspect
(
tags
)
}
"
)
...
...
@@ -379,7 +379,7 @@ def run(["revoke_invite", token]) do
def
run
([
"delete_activities"
,
nickname
])
do
Common
.
start_pleroma
()
with
%
User
{
local:
true
}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{
local:
true
}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
User
.
delete_user_activities
(
user
)
Mix
.
shell
()
.
info
(
"User
#{
nickname
}
statuses deleted."
)
else
...
...
lib/pleroma/PasswordResetToken.ex
View file @
b9cdf6d3
...
...
@@ -39,7 +39,7 @@ def used_changeset(struct) do
def
reset_password
(
token
,
data
)
do
with
%{
used:
false
}
=
token
<-
Repo
.
get_by
(
PasswordResetToken
,
%{
token:
token
}),
%
User
{}
=
user
<-
User
.
get_by_id
(
token
.
user_id
),
%
User
{}
=
user
<-
User
.
get_
cached_
by_id
(
token
.
user_id
),
{
:ok
,
_user
}
<-
User
.
reset_password
(
user
,
data
),
{
:ok
,
token
}
<-
Repo
.
update
(
used_changeset
(
token
))
do
{
:ok
,
token
}
...
...
lib/pleroma/list.ex
View file @
b9cdf6d3
...
...
@@ -80,7 +80,7 @@ def get_lists_from_activity(%Activity{actor: ap_id}) do
# Get lists to which the account belongs.
def
get_lists_account_belongs
(%
User
{}
=
owner
,
account_id
)
do
user
=
User
.
get_by_id
(
account_id
)
user
=
User
.
get_
cached_
by_id
(
account_id
)
query
=
from
(
...
...
lib/pleroma/notification.ex
View file @
b9cdf6d3
...
...
@@ -196,7 +196,7 @@ def skip?(
def
skip?
(
:follows
,
activity
,
%{
info:
%{
notification_settings:
%{
"follows"
=>
false
}}}
=
user
)
do
actor
=
activity
.
data
[
"actor"
]
followed
=
User
.
get_by_ap_id
(
actor
)
followed
=
User
.
get_
cached_
by_ap_id
(
actor
)
User
.
following?
(
user
,
followed
)
end
...
...
lib/pleroma/user.ex
View file @
b9cdf6d3
...
...
@@ -269,6 +269,7 @@ defp autofollow_users(user) do
def
register
(%
Ecto
.
Changeset
{}
=
changeset
)
do
with
{
:ok
,
user
}
<-
Repo
.
insert
(
changeset
),
{
:ok
,
user
}
<-
autofollow_users
(
user
),
{
:ok
,
user
}
<-
set_cache
(
user
),
{
:ok
,
_
}
<-
Pleroma
.
User
.
WelcomeMessage
.
post_welcome_message_to_user
(
user
),
{
:ok
,
_
}
<-
try_send_confirmation_email
(
user
)
do
{
:ok
,
user
}
...
...
@@ -453,10 +454,13 @@ def get_by_guessed_nickname(ap_id) do
name
=
List
.
last
(
String
.
split
(
ap_id
,
"/"
))
nickname
=
"
#{
name
}
@
#{
domain
}
"
get_by_nickname
(
nickname
)
get_
cached_
by_nickname
(
nickname
)
end
def
set_cache
(
user
)
do
def
set_cache
({
:ok
,
user
}),
do
:
set_cache
(
user
)
def
set_cache
({
:error
,
err
}),
do
:
{
:error
,
err
}
def
set_cache
(%
User
{}
=
user
)
do
Cachex
.
put
(
:user_cache
,
"ap_id:
#{
user
.
ap_id
}
"
,
user
)
Cachex
.
put
(
:user_cache
,
"nickname:
#{
user
.
nickname
}
"
,
user
)
Cachex
.
put
(
:user_cache
,
"user_info:
#{
user
.
id
}
"
,
user_info
(
user
))
...
...
@@ -544,6 +548,7 @@ def get_or_fetch_by_nickname(nickname) do
with
[
_nick
,
_domain
]
<-
String
.
split
(
nickname
,
"@"
),
{
:ok
,
user
}
<-
fetch_by_nickname
(
nickname
)
do
if
Pleroma
.
Config
.
get
([
:fetch_initial_posts
,
:enabled
])
do
# TODO turn into job
{
:ok
,
_
}
=
Task
.
start
(
__MODULE__
,
:fetch_initial_posts
,
[
user
])
end
...
...
@@ -1002,7 +1007,7 @@ def block(blocker, %User{ap_id: ap_id} = blocked) do
# helper to handle the block given only an actor's AP id
def
block
(
blocker
,
%{
ap_id:
ap_id
})
do
block
(
blocker
,
User
.
get
_by_ap_id
(
ap_id
))
block
(
blocker
,
get_cached
_by_ap_id
(
ap_id
))
end
def
unblock
(
blocker
,
%{
ap_id:
ap_id
})
do
...
...
@@ -1032,7 +1037,7 @@ def blocks?(user, %{ap_id: ap_id}) do
end
def
subscribed_to?
(
user
,
%{
ap_id:
ap_id
})
do
with
%
User
{}
=
target
<-
User
.
get
_by_ap_id
(
ap_id
)
do
with
%
User
{}
=
target
<-
get_cached
_by_ap_id
(
ap_id
)
do
Enum
.
member?
(
target
.
info
.
subscribers
,
user
.
ap_id
)
end
end
...
...
@@ -1207,7 +1212,7 @@ def fetch_by_ap_id(ap_id) do
end
def
get_or_fetch_by_ap_id
(
ap_id
)
do
user
=
get_by_ap_id
(
ap_id
)
user
=
get_
cached_
by_ap_id
(
ap_id
)
if
!is_nil
(
user
)
and
!User
.
needs_update?
(
user
)
do
user
...
...
@@ -1230,7 +1235,7 @@ def get_or_fetch_by_ap_id(ap_id) do
def
get_or_create_instance_user
do
relay_uri
=
"
#{
Pleroma
.
Web
.
Endpoint
.
url
()
}
/relay"
if
user
=
get_by_ap_id
(
relay_uri
)
do
if
user
=
get_
cached_
by_ap_id
(
relay_uri
)
do
user
else
changes
=
...
...
@@ -1277,13 +1282,11 @@ defp blank?(""), do: nil
defp
blank?
(
n
),
do
:
n
def
insert_or_update_user
(
data
)
do
data
=
data
|>
Map
.
put
(
:name
,
blank?
(
data
[
:name
])
||
data
[
:nickname
])
cs
=
User
.
remote_user_creation
(
data
)
Repo
.
insert
(
cs
,
on_conflict:
:replace_all
,
conflict_target:
:nickname
)
data
|>
Map
.
put
(
:name
,
blank?
(
data
[
:name
])
||
data
[
:nickname
])
|>
remote_user_creation
()
|>
Repo
.
insert
(
on_conflict:
:replace_all
,
conflict_target:
:nickname
)
|>
set_cache
()
end
def
ap_enabled?
(%
User
{
local:
true
}),
do
:
true
...
...
@@ -1299,8 +1302,8 @@ def get_or_fetch(nickname), do: get_or_fetch_by_nickname(nickname)
# this is because we have synchronous follow APIs and need to simulate them
# with an async handshake
def
wait_and_refresh
(
_
,
%
User
{
local:
true
}
=
a
,
%
User
{
local:
true
}
=
b
)
do
with
%
User
{}
=
a
<-
User
.
get_by_id
(
a
.
id
),
%
User
{}
=
b
<-
User
.
get_by_id
(
b
.
id
)
do
with
%
User
{}
=
a
<-
User
.
get_
cached_
by_id
(
a
.
id
),
%
User
{}
=
b
<-
User
.
get_
cached_
by_id
(
b
.
id
)
do
{
:ok
,
a
,
b
}
else
_e
->
...
...
@@ -1310,8 +1313,8 @@ def wait_and_refresh(_, %User{local: true} = a, %User{local: true} = b) do
def
wait_and_refresh
(
timeout
,
%
User
{}
=
a
,
%
User
{}
=
b
)
do
with
:ok
<-
:timer
.
sleep
(
timeout
),
%
User
{}
=
a
<-
User
.
get_by_id
(
a
.
id
),
%
User
{}
=
b
<-
User
.
get_by_id
(
b
.
id
)
do
%
User
{}
=
a
<-
User
.
get_
cached_
by_id
(
a
.
id
),
%
User
{}
=
b
<-
User
.
get_
cached_
by_id
(
b
.
id
)
do
{
:ok
,
a
,
b
}
else
_e
->
...
...
@@ -1350,7 +1353,7 @@ def tag(user_identifiers, tags) when is_list(user_identifiers) do
end
def
tag
(
nickname
,
tags
)
when
is_binary
(
nickname
),
do
:
tag
(
User
.
get_by_nickname
(
nickname
),
tags
)
do
:
tag
(
get_by_nickname
(
nickname
),
tags
)
def
tag
(%
User
{}
=
user
,
tags
),
do
:
update_tags
(
user
,
Enum
.
uniq
((
user
.
tags
||
[])
++
normalize_tags
(
tags
)))
...
...
@@ -1362,7 +1365,7 @@ def untag(user_identifiers, tags) when is_list(user_identifiers) do
end
def
untag
(
nickname
,
tags
)
when
is_binary
(
nickname
),
do
:
untag
(
User
.
get_by_nickname
(
nickname
),
tags
)
do
:
untag
(
get_by_nickname
(
nickname
),
tags
)
def
untag
(%
User
{}
=
user
,
tags
),
do
:
update_tags
(
user
,
(
user
.
tags
||
[])
--
normalize_tags
(
tags
))
...
...
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
b9cdf6d3
...
...
@@ -197,7 +197,7 @@ def stream_out(activity) do
if
!Enum
.
member?
(
activity
.
data
[
"cc"
]
||
[],
public
)
&&
!Enum
.
member?
(
activity
.
data
[
"to"
],
User
.
get_by_ap_id
(
activity
.
data
[
"actor"
])
.
follower_address
User
.
get_
cached_
by_ap_id
(
activity
.
data
[
"actor"
])
.
follower_address
),
do
:
Pleroma
.
Web
.
Streamer
.
stream
(
"direct"
,
activity
)
end
...
...
@@ -889,7 +889,7 @@ def fetch_and_prepare_user_from_ap_id(ap_id) do
end
def
make_user_from_ap_id
(
ap_id
)
do
if
_user
=
User
.
get_by_ap_id
(
ap_id
)
do
if
_user
=
User
.
get_
cached_
by_ap_id
(
ap_id
)
do
Transmogrifier
.
upgrade_user_from_ap_id
(
ap_id
)
else
with
{
:ok
,
data
}
<-
fetch_and_prepare_user_from_ap_id
(
ap_id
)
do
...
...
lib/pleroma/web/activity_pub/transmogrifier.ex
View file @
b9cdf6d3
...
...
@@ -537,7 +537,7 @@ def handle_incoming(
data
)
when
object_type
in
[
"Person"
,
"Application"
,
"Service"
,
"Organization"
]
do
with
%
User
{
ap_id:
^
actor_id
}
=
actor
<-
User
.
get_by_ap_id
(
object
[
"id"
])
do
with
%
User
{
ap_id:
^
actor_id
}
=
actor
<-
User
.
get_
cached_
by_ap_id
(
object
[
"id"
])
do
{
:ok
,
new_user_data
}
=
ActivityPub
.
user_data_from_user_object
(
object
)
banner
=
new_user_data
[
:info
][
"banner"
]
...
...
@@ -964,7 +964,7 @@ def perform(:user_upgrade, user) do
end
def
upgrade_user_from_ap_id
(
ap_id
)
do
with
%
User
{
local:
false
}
=
user
<-
User
.
get_by_ap_id
(
ap_id
),
with
%
User
{
local:
false
}
=
user
<-
User
.
get_
cached_
by_ap_id
(
ap_id
),
{
:ok
,
data
}
<-
ActivityPub
.
fetch_and_prepare_user_from_ap_id
(
ap_id
),
already_ap
<-
User
.
ap_enabled?
(
user
),
{
:ok
,
user
}
<-
user
|>
User
.
upgrade_changeset
(
data
)
|>
User
.
update_and_set_cache
()
do
...
...
lib/pleroma/web/admin_api/admin_api_controller.ex
View file @
b9cdf6d3
...
...
@@ -19,7 +19,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
action_fallback
(
:errors
)
def
user_delete
(
conn
,
%{
"nickname"
=>
nickname
})
do
User
.
get_by_nickname
(
nickname
)
User
.
get_
cached_
by_nickname
(
nickname
)
|>
User
.
delete
()
conn
...
...
@@ -27,8 +27,8 @@ def user_delete(conn, %{"nickname" => nickname}) do
end
def
user_follow
(
conn
,
%{
"follower"
=>
follower_nick
,
"followed"
=>
followed_nick
})
do
with
%
User
{}
=
follower
<-
User
.
get_by_nickname
(
follower_nick
),
%
User
{}
=
followed
<-
User
.
get_by_nickname
(
followed_nick
)
do
with
%
User
{}
=
follower
<-
User
.
get_
cached_
by_nickname
(
follower_nick
),
%
User
{}
=
followed
<-
User
.
get_
cached_
by_nickname
(
followed_nick
)
do
User
.
follow
(
follower
,
followed
)
end
...
...
@@ -37,8 +37,8 @@ def user_follow(conn, %{"follower" => follower_nick, "followed" => followed_nick
end
def
user_unfollow
(
conn
,
%{
"follower"
=>
follower_nick
,
"followed"
=>
followed_nick
})
do
with
%
User
{}
=
follower
<-
User
.
get_by_nickname
(
follower_nick
),
%
User
{}
=
followed
<-
User
.
get_by_nickname
(
followed_nick
)
do
with
%
User
{}
=
follower
<-
User
.
get_
cached_
by_nickname
(
follower_nick
),
%
User
{}
=
followed
<-
User
.
get_
cached_
by_nickname
(
followed_nick
)
do
User
.
unfollow
(
follower
,
followed
)
end
...
...
@@ -67,7 +67,7 @@ def user_create(
end
def
user_show
(
conn
,
%{
"nickname"
=>
nickname
})
do
with
%
User
{}
=
user
<-
User
.
get_by_nickname
(
nickname
)
do
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
)
do
conn
|>
json
(
AccountView
.
render
(
"show.json"
,
%{
user:
user
}))
else
...
...
@@ -76,7 +76,7 @@ def user_show(conn, %{"nickname" => nickname}) do
end
def
user_toggle_activation
(
conn
,
%{
"nickname"
=>
nickname
})
do
user
=
User
.
get_by_nickname
(
nickname
)
user
=
User
.
get_
cached_
by_nickname
(
nickname
)
{
:ok
,
updated_user
}
=
User
.
deactivate
(
user
,
!user
.
info
.
deactivated
)
...
...
@@ -131,7 +131,7 @@ defp maybe_parse_filters(filters) do
def
right_add
(
conn
,
%{
"permission_group"
=>
permission_group
,
"nickname"
=>
nickname
})
when
permission_group
in
[
"moderator"
,
"admin"
]
do
user
=
User
.
get_by_nickname
(
nickname
)
user
=
User
.
get_
cached_
by_nickname
(
nickname
)
info
=
%{}
...
...
@@ -156,7 +156,7 @@ def right_add(conn, _) do
end
def
right_get
(
conn
,
%{
"nickname"
=>
nickname
})
do
user
=
User
.
get_by_nickname
(
nickname
)
user
=
User
.
get_
cached_
by_nickname
(
nickname
)
conn
|>
json
(%{
...
...
@@ -178,7 +178,7 @@ def right_delete(
|>
put_status
(
403
)
|>
json
(%{
error:
"You can't revoke your own admin status."
})
else
user
=
User
.
get_by_nickname
(
nickname
)
user
=
User
.
get_
cached_
by_nickname
(
nickname
)
info
=
%{}
...
...
@@ -204,7 +204,7 @@ def right_delete(conn, _) do
def
set_activation_status
(
conn
,
%{
"nickname"
=>
nickname
,
"status"
=>
status
})
do
with
{
:ok
,
status
}
<-
Ecto
.
Type
.
cast
(
:boolean
,
status
),
%
User
{}
=
user
<-
User
.
get_by_nickname
(
nickname
),
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
nickname
),
{
:ok
,
_
}
<-
User
.
deactivate
(
user
,
!status
),
do
:
json_response
(
conn
,
:no_content
,
""
)
end
...
...
@@ -277,7 +277,7 @@ def revoke_invite(conn, %{"token" => token}) do
@doc
"Get a password reset token (base64 string) for given nickname"
def
get_password_reset
(
conn
,
%{
"nickname"
=>
nickname
})
do
(%
User
{
local:
true
}
=
user
)
=
User
.
get_by_nickname
(
nickname
)
(%
User
{
local:
true
}
=
user
)
=
User
.
get_
cached_
by_nickname
(
nickname
)
{
:ok
,
token
}
=
Pleroma
.
PasswordResetToken
.
create_token
(
user
)
conn
...
...
lib/pleroma/web/channels/user_socket.ex
View file @
b9cdf6d3
...
...
@@ -24,7 +24,7 @@ defmodule Pleroma.Web.UserSocket do
def
connect
(%{
"token"
=>
token
},
socket
)
do
with
true
<-
Pleroma
.
Config
.
get
([
:chat
,
:enabled
]),
{
:ok
,
user_id
}
<-
Phoenix
.
Token
.
verify
(
socket
,
"user socket"
,
token
,
max_age:
84_600
),
%
User
{}
=
user
<-
Pleroma
.
User
.
get_by_id
(
user_id
)
do
%
User
{}
=
user
<-
Pleroma
.
User
.
get_
cached_
by_id
(
user_id
)
do
{
:ok
,
assign
(
socket
,
:user_name
,
user
.
nickname
)}
else
_e
->
:error
...
...
lib/pleroma/web/common_api/common_api.ex
View file @
b9cdf6d3
...
...
@@ -284,7 +284,7 @@ def thread_muted?(user, activity) do
def
report
(
user
,
data
)
do
with
{
:account_id
,
%{
"account_id"
=>
account_id
}}
<-
{
:account_id
,
data
},
{
:account
,
%
User
{}
=
account
}
<-
{
:account
,
User
.
get_by_id
(
account_id
)},
{
:account
,
%
User
{}
=
account
}
<-
{
:account
,
User
.
get_
cached_
by_id
(
account_id
)},
{
:ok
,
{
content_html
,
_
,
_
}}
<-
make_report_content_html
(
data
[
"comment"
]),
{
:ok
,
statuses
}
<-
get_report_statuses
(
account
,
data
),
{
:ok
,
activity
}
<-
...
...
lib/pleroma/web/common_api/utils.ex
View file @
b9cdf6d3
...
...
@@ -284,7 +284,7 @@ defp shortname(name) do
end
def
confirm_current_password
(
user
,
password
)
do
with
%
User
{
local:
true
}
=
db_user
<-
User
.
get_by_id
(
user
.
id
),
with
%
User
{
local:
true
}
=
db_user
<-
User
.
get_
cached_
by_id
(
user
.
id
),
true
<-
Pbkdf2
.
checkpw
(
password
,
db_user
.
password_hash
)
do
{
:ok
,
db_user
}
else
...
...
lib/pleroma/web/federator/federator.ex
View file @
b9cdf6d3
...
...
@@ -186,7 +186,7 @@ def perform(type, _) do
end
def
ap_enabled_actor
(
id
)
do
user
=
User
.
get_by_ap_id
(
id
)
user
=
User
.
get_
cached_
by_ap_id
(
id
)
if
User
.
ap_enabled?
(
user
)
do
{
:ok
,
user
}
...
...
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
View file @
b9cdf6d3
...
...
@@ -304,7 +304,7 @@ def public_timeline(%{assigns: %{user: user}} = conn, params) do
end
def
user_statuses
(%{
assigns:
%{
user:
reading_user
}}
=
conn
,
params
)
do
with
%
User
{}
=
user
<-
User
.
get_by_id
(
params
[
"id"
])
do
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_id
(
params
[
"id"
])
do
activities
=
ActivityPub
.
fetch_user_activities
(
user
,
reading_user
,
params
)
conn
...
...
@@ -546,7 +546,7 @@ def unpin_status(%{assigns: %{user: user}} = conn, %{"id" => ap_id_or_id}) do
def
bookmark_status
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
Activity
{}
=
activity
<-
Activity
.
get_by_id_with_object
(
id
),
%
Object
{}
=
object
<-
Object
.
normalize
(
activity
),
%
User
{}
=
user
<-
User
.
get_by_nickname
(
user
.
nickname
),
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
user
.
nickname
),
true
<-
Visibility
.
visible_for_user?
(
activity
,
user
),
{
:ok
,
user
}
<-
User
.
bookmark
(
user
,
object
.
data
[
"id"
])
do
conn
...
...
@@ -558,7 +558,7 @@ def bookmark_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do
def
unbookmark_status
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
Activity
{}
=
activity
<-
Activity
.
get_by_id_with_object
(
id
),
%
Object
{}
=
object
<-
Object
.
normalize
(
activity
),
%
User
{}
=
user
<-
User
.
get_by_nickname
(
user
.
nickname
),
%
User
{}
=
user
<-
User
.
get_
cached_
by_nickname
(
user
.
nickname
),
true
<-
Visibility
.
visible_for_user?
(
activity
,
user
),
{
:ok
,
user
}
<-
User
.
unbookmark
(
user
,
object
.
data
[
"id"
])
do
conn
...
...
@@ -750,7 +750,7 @@ def hashtag_timeline(%{assigns: %{user: user}} = conn, params) do
end
def
followers
(%{
assigns:
%{
user:
for_user
}}
=
conn
,
%{
"id"
=>
id
}
=
params
)
do
with
%
User
{}
=
user
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_id
(
id
),
followers
<-
MastodonAPI
.
get_followers
(
user
,
params
)
do
followers
=
cond
do
...
...
@@ -767,7 +767,7 @@ def followers(%{assigns: %{user: for_user}} = conn, %{"id" => id} = params) do
end
def
following
(%{
assigns:
%{
user:
for_user
}}
=
conn
,
%{
"id"
=>
id
}
=
params
)
do
with
%
User
{}
=
user
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
user
<-
User
.
get_
cached_
by_id
(
id
),
followers
<-
MastodonAPI
.
get_friends
(
user
,
params
)
do
followers
=
cond
do
...
...
@@ -792,7 +792,7 @@ def follow_requests(%{assigns: %{user: followed}} = conn, _params) do
end
def
authorize_follow_request
(%{
assigns:
%{
user:
followed
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
User
{}
=
follower
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
follower
<-
User
.
get_
cached_
by_id
(
id
),
{
:ok
,
follower
}
<-
CommonAPI
.
accept_follow_request
(
follower
,
followed
)
do
conn
|>
put_view
(
AccountView
)
...
...
@@ -806,7 +806,7 @@ def authorize_follow_request(%{assigns: %{user: followed}} = conn, %{"id" => id}
end
def
reject_follow_request
(%{
assigns:
%{
user:
followed
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
User
{}
=
follower
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
follower
<-
User
.
get_
cached_
by_id
(
id
),
{
:ok
,
follower
}
<-
CommonAPI
.
reject_follow_request
(
follower
,
followed
)
do
conn
|>
put_view
(
AccountView
)
...
...
@@ -872,7 +872,7 @@ def unfollow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do
end
def
mute
(%{
assigns:
%{
user:
muter
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
User
{}
=
muted
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
muted
<-
User
.
get_
cached_
by_id
(
id
),
{
:ok
,
muter
}
<-
User
.
mute
(
muter
,
muted
)
do
conn
|>
put_view
(
AccountView
)
...
...
@@ -886,7 +886,7 @@ def mute(%{assigns: %{user: muter}} = conn, %{"id" => id}) do
end
def
unmute
(%{
assigns:
%{
user:
muter
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
User
{}
=
muted
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
muted
<-
User
.
get_
cached_
by_id
(
id
),
{
:ok
,
muter
}
<-
User
.
unmute
(
muter
,
muted
)
do
conn
|>
put_view
(
AccountView
)
...
...
@@ -907,7 +907,7 @@ def mutes(%{assigns: %{user: user}} = conn, _) do
end
def
block
(%{
assigns:
%{
user:
blocker
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
User
{}
=
blocked
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
blocked
<-
User
.
get_
cached_
by_id
(
id
),
{
:ok
,
blocker
}
<-
User
.
block
(
blocker
,
blocked
),
{
:ok
,
_activity
}
<-
ActivityPub
.
block
(
blocker
,
blocked
)
do
conn
...
...
@@ -922,7 +922,7 @@ def block(%{assigns: %{user: blocker}} = conn, %{"id" => id}) do
end
def
unblock
(%{
assigns:
%{
user:
blocker
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
User
{}
=
blocked
<-
User
.
get_by_id
(
id
),
with
%
User
{}
=
blocked
<-
User
.
get_
cached_
by_id
(
id
),
{
:ok
,
blocker
}
<-
User
.
unblock
(
blocker
,
blocked
),
{
:ok
,
_activity
}
<-
ActivityPub
.
unblock
(
blocker
,
blocked
)
do
conn
...
...
@@ -1088,7 +1088,7 @@ def favourites(%{assigns: %{user: user}} = conn, params) do
end
def
bookmarks
(%{
assigns:
%{
user:
user
}}
=
conn
,
_
)
do
user
=
User
.
get_by_id
(
user
.
id
)
user
=
User
.
get_
cached_
by_id
(
user
.
id
)
activities
=
user
.
bookmarks
...
...
@@ -1145,7 +1145,7 @@ def add_to_list(%{assigns: %{user: user}} = conn, %{"id" => id, "account_ids" =>
accounts
|>
Enum
.
each
(
fn
account_id
->
with
%
Pleroma
.
List
{}
=
list
<-
Pleroma
.
List
.
get
(
id
,
user
),
%
User
{}
=
followed
<-
User
.
get_by_id
(
account_id
)
do
%
User
{}
=
followed
<-
User
.
get_
cached_
by_id
(
account_id
)
do
Pleroma
.
List
.
follow
(
list
,
followed
)
end
end
)
...
...
@@ -1157,7 +1157,7 @@ def remove_from_list(%{assigns: %{user: user}} = conn, %{"id" => id, "account_id
accounts
|>
Enum
.
each
(
fn
account_id
->
with
%
Pleroma
.
List
{}
=
list
<-
Pleroma
.
List
.
get
(
id
,
user
),
%
User
{}
=
followed
<-
Pleroma
.
User
.
get_by_id
(
account_id
)
do
%
User
{}
=
followed
<-
Pleroma
.
User
.
get_
cached_
by_id
(
account_id
)
do
Pleroma
.
List
.
unfollow
(
list
,
followed
)
end
end
)
...
...
@@ -1450,7 +1450,7 @@ def logout(conn, _) do
def
relationship_noop
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
id
})
do
Logger
.
debug
(
"Unimplemented, returning unmodified relationship"
)
with
%
User
{}
=
target
<-
User
.
get_by_id
(
id
)
do
with
%
User
{}
=
target
<-
User
.
get_
cached_
by_id
(
id
)
do
conn
|>
put_view
(
AccountView
)
|>
render
(
"relationship.json"
,
%{
user:
user
,
target:
target
})
...
...
lib/pleroma/web/mastodon_api/views/account_view.ex
View file @
b9cdf6d3
...
...
@@ -68,7 +68,7 @@ def render("relationships.json", %{user: user, targets: targets}) do
defp
do_render
(
"account.json"
,
%{
user:
user
}
=
opts
)
do
image
=
User
.
avatar_url
(
user
)
|>
MediaProxy
.
url
()
header
=
User
.
banner_url
(
user
)
|>
MediaProxy
.
url
()
user_info
=
User
.
user_info
(
user
)
user_info
=
User
.
get_cached_
user_info
(
user
)
bot
=
(
user
.
info
.
source_data
[
"type"
]
||
"Person"
)
in
[
"Application"
,
"Service"
]
emojis
=
...
...
lib/pleroma/web/mastodon_api/websocket_handler.ex
View file @
b9cdf6d3
...
...
@@ -90,7 +90,7 @@ defp allow_request(stream, nil) when stream in @anonymous_streams do
# Authenticated streams.
defp
allow_request
(
stream
,
{
"access_token"
,
access_token
})
when
stream
in
@streams
do
with
%
Token
{
user_id:
user_id
}
<-
Repo
.
get_by
(
Token
,
token:
access_token
),
user
=
%
User
{}
<-
User
.
get_by_id
(
user_id
)
do
user
=
%
User
{}
<-
User
.
get_
cached_
by_id
(
user_id
)
do
{
:ok
,
user
}
else
_
->
{
:error
,
403
}
...
...
lib/pleroma/web/oauth/oauth_controller.ex
View file @
b9cdf6d3
...
...
@@ -143,7 +143,7 @@ def token_exchange(conn, %{"grant_type" => "authorization_code"} = params) do
fixed_token
=
fix_padding
(
params
[
"code"
]),
%
Authorization
{}
=
auth
<-
Repo
.
get_by
(
Authorization
,
token:
fixed_token
,
app_id:
app
.
id
),
%
User
{}
=
user
<-
User
.
get_by_id
(
auth
.
user_id
),
%
User
{}
=
user
<-
User
.
get_
cached_
by_id
(
auth
.
user_id
),
{
:ok
,
token
}
<-
Token
.
exchange_token
(
app
,
auth
),
{
:ok
,
inserted_at
}
<-
DateTime
.
from_naive
(
token
.
inserted_at
,
"Etc/UTC"
)
do
response
=
%{
...
...
lib/pleroma/web/oauth/token.ex
View file @
b9cdf6d3
...
...
@@ -27,7 +27,7 @@ defmodule Pleroma.Web.OAuth.Token do
def
exchange_token
(
app
,
auth
)
do
with
{
:ok
,
auth
}
<-
Authorization
.
use_token
(
auth
),
true
<-
auth
.
app_id
==
app
.
id
do
create_token
(
app
,
User
.
get_by_id
(
auth
.
user_id
),
auth
.
scopes
)
create_token
(
app
,
User
.
get_
cached_
by_id
(
auth
.
user_id
),
auth
.
scopes
)
end
end
...
...
lib/pleroma/web/ostatus/ostatus.ex
View file @
b9cdf6d3
...
...
@@ -294,7 +294,7 @@ def make_user(uri, update \\ false) do
}
with
false
<-
update
,
%
User
{}
=
user
<-
User
.
get_by_ap_id
(
data
.
ap_id
)
do
%
User
{}
=
user
<-
User
.
get_
cached_
by_ap_id
(
data
.
ap_id
)
do
{
:ok
,
user
}
else
_e
->
User
.
insert_or_update_user
(
data
)
...
...
lib/pleroma/web/streamer.ex