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
594dd01a
Commit
594dd01a
authored
Apr 13, 2017
by
dtluna
Browse files
Refactor follow API
parent
3ff917b5
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/twitter_api/twitter_api.ex
View file @
594dd01a
...
...
@@ -101,8 +101,8 @@ def fetch_status(user, id) do
end
end
def
follow
(%
User
{}
=
follower
,
%{
"user_id"
=>
followed_id
}
)
do
with
%
User
{}
=
followed
<-
Repo
.
get
(
U
ser
,
followed_id
),
def
follow
(%
User
{}
=
follower
,
params
)
do
with
%
User
{}
=
followed
<-
get
_u
ser
(
params
),
{
:ok
,
follower
}
<-
User
.
follow
(
follower
,
followed
),
{
:ok
,
activity
}
<-
ActivityPub
.
insert
(%{
"type"
=>
"Follow"
,
...
...
@@ -115,20 +115,6 @@ def follow(%User{} = follower, %{ "user_id" => followed_id }) do
end
end
def
follow
(%
User
{}
=
follower
,
%{
"screen_name"
=>
followed_name
})
do
with
%
User
{}
=
followed
<-
Repo
.
get_by
(
User
,
nickname:
followed_name
),
{
:ok
,
follower
}
<-
User
.
follow
(
follower
,
followed
),
{
:ok
,
activity
}
<-
ActivityPub
.
insert
(%{
"type"
=>
"Follow"
,
"actor"
=>
follower
.
ap_id
,
"object"
=>
followed
.
ap_id
,
"published"
=>
make_date
()
})
do
{
:ok
,
follower
,
followed
,
activity
}
end
end
def
unfollow
(%
User
{}
=
follower
,
followed_id
)
do
with
%
User
{}
=
followed
<-
Repo
.
get
(
User
,
followed_id
),
{
:ok
,
follower
}
<-
User
.
unfollow
(
follower
,
followed
)
...
...
@@ -202,4 +188,13 @@ defp activity_to_status(activity, opts) do
defp
make_date
do
DateTime
.
utc_now
()
|>
DateTime
.
to_iso8601
end
defp
get_user
(
params
)
do
case
params
do
%{
"user_id"
=>
user_id
}
->
Repo
.
get
(
User
,
user_id
)
%{
"screen_name"
=>
nickname
}
->
Repo
.
get_by
(
User
,
nickname:
nickname
)
end
end
end
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
594dd01a
...
...
@@ -44,18 +44,18 @@ def friends_timeline(%{assigns: %{user: user}} = conn, params) do
end
def
follow
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
{
:ok
,
_
user
,
followe
r
,
_activity
}
=
TwitterAPI
.
follow
(
user
,
params
)
{
:ok
,
user
,
followe
d
,
_activity
}
=
TwitterAPI
.
follow
(
user
,
params
)
response
=
followe
r
|>
UserRepresenter
.
to_json
(%{
for:
user
})
response
=
followe
d
|>
UserRepresenter
.
to_json
(%{
for:
user
})
conn
|>
json_reply
(
200
,
response
)
end
def
unfollow
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"user_id"
=>
followed_id
})
do
{
:ok
,
user
,
followe
r
}
=
TwitterAPI
.
unfollow
(
user
,
followed_id
)
{
:ok
,
user
,
followe
d
}
=
TwitterAPI
.
unfollow
(
user
,
followed_id
)
response
=
followe
r
|>
UserRepresenter
.
to_json
(%{
for:
user
})
response
=
followe
d
|>
UserRepresenter
.
to_json
(%{
for:
user
})
conn
|>
json_reply
(
200
,
response
)
...
...
Write
Preview
Markdown
is supported
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