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
48569624
Commit
48569624
authored
Jun 03, 2018
by
eal
Browse files
MastoAPI: add domain blocking.
parent
87566b6e
Pipeline
#2202
passed with stages
in 4 minutes and 51 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
48569624
...
...
@@ -481,9 +481,11 @@ def blocks?(user, %{ap_id: ap_id}) do
blocks
=
user
.
info
[
"blocks"
]
||
[]
domain_blocks
=
user
.
info
[
"domain_blocks"
]
||
[]
%{
host:
host
}
=
URI
.
parse
(
ap_id
)
Enum
.
member?
(
blocks
,
ap_id
)
||
Enum
.
any?
(
domain_blocks
,
fn
domain
->
host
==
domain
end
)
Enum
.
member?
(
blocks
,
ap_id
)
||
Enum
.
any?
(
domain_blocks
,
fn
domain
->
host
==
domain
end
)
end
def
block_domain
(
user
,
domain
)
do
...
...
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
View file @
48569624
...
...
@@ -533,6 +533,20 @@ def blocks(%{assigns: %{user: user}} = conn, _) do
end
end
def
domain_blocks
(%{
assigns:
%{
user:
%{
info:
info
}}}
=
conn
,
_
)
do
json
(
conn
,
info
[
"domain_blocks"
]
||
[])
end
def
block_domain
(%{
assigns:
%{
user:
blocker
}}
=
conn
,
%{
"domain"
=>
domain
})
do
User
.
block_domain
(
blocker
,
domain
)
json
(
conn
,
%{})
end
def
unblock_domain
(%{
assigns:
%{
user:
blocker
}}
=
conn
,
%{
"domain"
=>
domain
})
do
User
.
unblock_domain
(
blocker
,
domain
)
json
(
conn
,
%{})
end
def
search
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"q"
=>
query
}
=
params
)
do
accounts
=
User
.
search
(
query
,
params
[
"resolve"
]
==
"true"
)
...
...
lib/pleroma/web/router.ex
View file @
48569624
...
...
@@ -101,7 +101,6 @@ def user_fetcher(username) do
get
(
"/blocks"
,
MastodonAPIController
,
:blocks
)
get
(
"/domain_blocks"
,
MastodonAPIController
,
:empty_array
)
get
(
"/follow_requests"
,
MastodonAPIController
,
:empty_array
)
get
(
"/mutes"
,
MastodonAPIController
,
:empty_array
)
...
...
@@ -134,6 +133,10 @@ def user_fetcher(username) do
get
(
"/lists/:id/accounts"
,
MastodonAPIController
,
:list_accounts
)
post
(
"/lists/:id/accounts"
,
MastodonAPIController
,
:add_to_list
)
delete
(
"/lists/:id/accounts"
,
MastodonAPIController
,
:remove_from_list
)
get
(
"/domain_blocks"
,
MastodonAPIController
,
:domain_blocks
)
post
(
"/domain_blocks"
,
MastodonAPIController
,
:block_domain
)
delete
(
"/domain_blocks"
,
MastodonAPIController
,
:unblock_domain
)
end
scope
"/api/web"
,
Pleroma
.
Web
.
MastodonAPI
do
...
...
test/web/mastodon_api/mastodon_api_controller_test.exs
View file @
48569624
...
...
@@ -780,6 +780,46 @@ test "getting a list of blocks", %{conn: conn} do
assert
[%{
"id"
=>
^
other_user_id
}]
=
json_response
(
conn
,
200
)
end
test
"blocking / unblocking a domain"
,
%{
conn:
conn
}
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
,
%{
ap_id:
"https://dogwhistle.zone/@pundit"
})
conn
=
conn
|>
assign
(
:user
,
user
)
|>
post
(
"/api/v1/domain_blocks"
,
%{
"domain"
=>
"dogwhistle.zone"
})
assert
%{}
=
json_response
(
conn
,
200
)
user
=
User
.
get_cached_by_ap_id
(
user
.
ap_id
)
assert
User
.
blocks?
(
user
,
other_user
)
conn
=
build_conn
()
|>
assign
(
:user
,
user
)
|>
delete
(
"/api/v1/domain_blocks"
,
%{
"domain"
=>
"dogwhistle.zone"
})
assert
%{}
=
json_response
(
conn
,
200
)
user
=
User
.
get_cached_by_ap_id
(
user
.
ap_id
)
refute
User
.
blocks?
(
user
,
other_user
)
end
test
"getting a list of domain blocks"
do
user
=
insert
(
:user
)
{
:ok
,
user
}
=
User
.
block_domain
(
user
,
"bad.site"
)
{
:ok
,
user
}
=
User
.
block_domain
(
user
,
"even.worse.site"
)
conn
=
conn
|>
assign
(
:user
,
user
)
|>
get
(
"/api/v1/domain_blocks"
)
domain_blocks
=
json_response
(
conn
,
200
)
assert
"bad.site"
in
domain_blocks
assert
"even.worse.site"
in
domain_blocks
end
test
"unimplemented mute endpoints"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
...
...
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