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
79910ce5
Commit
79910ce5
authored
Apr 05, 2019
by
Sadposter
Committed by
Hannah Ward
Apr 05, 2019
Browse files
Add API endpoints and user column for subscription
parent
9c9eec62
Changes
5
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
79910ce5
...
...
@@ -923,6 +923,26 @@ def unmute(muter, %{ap_id: ap_id}) do
update_and_set_cache
(
cng
)
end
def
subscribe
(
subscriber
,
%{
ap_id:
ap_id
})
do
info_cng
=
subscriber
.
info
|>
User
.
Info
.
add_to_subscriptions
(
ap_id
)
change
(
subscriber
)
|>
put_embed
(
:info
,
info_cng
)
|>
update_and_set_cache
()
end
def
unsubscribe
(
unsubscriber
,
%{
ap_id:
ap_id
})
do
info_cng
=
subscriber
.
info
|>
User
.
Info
.
remove_from_subscriptions
(
ap_id
)
change
(
subscriber
)
|>
put_embed
(
:info
,
info_cng
)
|>
update_and_set_cache
()
end
def
block
(
blocker
,
%
User
{
ap_id:
ap_id
}
=
blocked
)
do
# sever any follow relationships to prevent leaks per activitypub (Pleroma issue #213)
blocker
=
...
...
lib/pleroma/user/info.ex
View file @
79910ce5
...
...
@@ -22,6 +22,7 @@ defmodule Pleroma.User.Info do
field
(
:domain_blocks
,
{
:array
,
:string
},
default:
[])
field
(
:mutes
,
{
:array
,
:string
},
default:
[])
field
(
:muted_reblogs
,
{
:array
,
:string
},
default:
[])
field
(
:subscribed_to
,
{
:array
,
:string
},
default:
[])
field
(
:deactivated
,
:boolean
,
default:
false
)
field
(
:no_rich_text
,
:boolean
,
default:
false
)
field
(
:ap_enabled
,
:boolean
,
default:
false
)
...
...
@@ -93,6 +94,14 @@ def set_blocks(info, blocks) do
|>
validate_required
([
:blocks
])
end
def
set_subscriptions
(
info
,
subscriptions
)
do
params
=
%{
subscriptions:
subscriptions
}
info
|>
cast
(
params
,
[
:subscribed_to
])
|>
validate_required
([
:subscribed_to
])
end
def
add_to_mutes
(
info
,
muted
)
do
set_mutes
(
info
,
Enum
.
uniq
([
muted
|
info
.
mutes
]))
end
...
...
@@ -109,6 +118,14 @@ def remove_from_block(info, blocked) do
set_blocks
(
info
,
List
.
delete
(
info
.
blocks
,
blocked
))
end
def
add_to_subscriptions
(
info
,
subscribed
)
do
set_subscriptions
(
info
,
Enum
.
uniq
([
subscribed
|
info
.
subscribed_to
]))
end
def
remove_from_subscriptions
(
info
,
subscribed
)
do
set_subscriptions
(
info
,
List
.
delete
(
info
.
subscribed_to
,
subscribed
))
end
def
set_domain_blocks
(
info
,
domain_blocks
)
do
params
=
%{
domain_blocks:
domain_blocks
}
...
...
lib/pleroma/web/router.ex
View file @
79910ce5
...
...
@@ -500,6 +500,9 @@ defmodule Pleroma.Web.Router do
post
(
"/blocks/create"
,
TwitterAPI
.
Controller
,
:block
)
post
(
"/blocks/destroy"
,
TwitterAPI
.
Controller
,
:unblock
)
post
(
"/subscriptions/create"
,
TwitterAPI
.
Controller
,
:subscribe
)
post
(
"/subscriptions/destroy"
,
TwitterAPI
.
Controller
,
:unsubscribe
)
end
end
...
...
lib/pleroma/web/twitter_api/twitter_api.ex
View file @
79910ce5
...
...
@@ -59,6 +59,18 @@ def unblock(%User{} = blocker, params) do
end
end
def
subscribe
(%
User
{}
=
subscriber
,
params
)
do
with
{
:ok
,
%
User
{}
=
subscribed
}
<-
get_user
(
params
)
do
User
.
subscribe
(
subscriber
,
subscribed
)
end
end
def
unsubscribe
(%
User
{}
=
unsubscriber
,
params
)
do
with
{
:ok
,
%
User
{}
=
unsubscribed
}
<-
get_user
(
params
)
do
User
.
unsubscribe
(
unsubscriber
,
unsubscribed
)
end
end
def
repeat
(%
User
{}
=
user
,
ap_id_or_id
)
do
with
{
:ok
,
_announce
,
%{
data:
%{
"id"
=>
id
}}}
<-
CommonAPI
.
repeat
(
ap_id_or_id
,
user
),
%
Activity
{}
=
activity
<-
Activity
.
get_create_by_object_ap_id
(
id
)
do
...
...
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
79910ce5
...
...
@@ -269,6 +269,30 @@ def unfollow(%{assigns: %{user: user}} = conn, params) do
end
end
def
subscribe
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
case
TwitterAPI
.
subscribe
(
user
,
params
)
do
{
:ok
,
user
,
subscribed
}
->
conn
|>
put_view
(
UserView
)
|>
render
(
"show.json"
,
%{
user:
subscribed
,
for:
user
})
{
:error
,
msg
}
->
forbidden_json_reply
(
conn
,
msg
)
end
end
def
unsubscribe
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
case
TwitterAPI
.
unsubscribe
(
user
,
params
)
do
{
:ok
,
user
,
unsubscribed
}
->
conn
|>
put_view
(
UserView
)
|>
render
(
"show.json"
,
%{
user:
unsubscribed
,
for:
user
})
{
:error
,
msg
}
->
forbidden_json_reply
(
conn
,
msg
)
end
end
def
fetch_status
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
id
})
do
with
%
Activity
{}
=
activity
<-
Activity
.
get_by_id
(
id
),
true
<-
Visibility
.
visible_for_user?
(
activity
,
user
)
do
...
...
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