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
8075bada
Commit
8075bada
authored
Apr 04, 2017
by
dtluna
Browse files
Add Follow activity insertion
parent
a83fa053
Changes
4
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
8075bada
...
...
@@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
def
insert
(
map
)
when
is_map
(
map
)
do
map
=
Map
.
put_new_lazy
(
map
,
"id"
,
&
generate_activity_id
/
0
)
map
=
if
map
[
"object"
]
do
map
=
if
is_map
(
map
[
"object"
]
)
do
object
=
Map
.
put_new_lazy
(
map
[
"object"
],
"id"
,
&
generate_object_id
/
0
)
Repo
.
insert!
(%
Object
{
data:
object
})
Map
.
put
(
map
,
"object"
,
object
)
...
...
lib/pleroma/web/twitter_api/twitter_api.ex
View file @
8075bada
...
...
@@ -103,9 +103,14 @@ def fetch_status(user, id) do
def
follow
(%
User
{}
=
follower
,
followed_id
)
do
with
%
User
{}
=
followed
<-
Repo
.
get
(
User
,
followed_id
),
{
:ok
,
follower
}
<-
User
.
follow
(
follower
,
followed
)
{
:ok
,
follower
}
<-
User
.
follow
(
follower
,
followed
),
{
:ok
,
activity
}
<-
ActivityPub
.
insert
(%{
"type"
=>
"Follow"
,
"actor"
=>
follower
.
ap_id
,
"object"
=>
followed
.
ap_id
})
do
{
:ok
,
follower
,
followed
}
{
:ok
,
follower
,
followed
,
activity
}
end
end
...
...
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
8075bada
...
...
@@ -44,7 +44,7 @@ def friends_timeline(%{assigns: %{user: user}} = conn, params) do
end
def
follow
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"user_id"
=>
followed_id
})
do
{
:ok
,
_user
,
follower
}
=
TwitterAPI
.
follow
(
user
,
followed_id
)
{
:ok
,
_user
,
follower
,
_activity
}
=
TwitterAPI
.
follow
(
user
,
followed_id
)
response
=
follower
|>
UserRepresenter
.
to_json
(%{
for:
user
})
...
...
test/web/twitter_api/twitter_api_test.exs
View file @
8075bada
...
...
@@ -107,11 +107,13 @@ test "Follow another user" do
{
:ok
,
user
}
=
UserBuilder
.
insert
{
:ok
,
following
}
=
UserBuilder
.
insert
(%{
nickname:
"guy"
})
{
:ok
,
user
,
following
}
=
TwitterAPI
.
follow
(
user
,
following
.
id
)
{
:ok
,
user
,
following
,
activity
}
=
TwitterAPI
.
follow
(
user
,
following
.
id
)
user
=
Repo
.
get
(
User
,
user
.
id
)
follow
=
Repo
.
get
(
Activity
,
activity
.
id
)
assert
user
.
following
==
[
User
.
ap_followers
(
following
)]
assert
follow
==
activity
end
test
"Unfollow another 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