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
6529cab9
Commit
6529cab9
authored
Apr 25, 2017
by
lain
Browse files
Merge branch 'develop' into dtluna/pleroma-bugfix/deny-empty-posts
parents
5b6070ec
aef7e943
Changes
4
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
6529cab9
...
...
@@ -63,6 +63,7 @@ def register_changeset(struct, params \\ %{}) do
|>
validate_confirmation
(
:password
)
|>
unique_constraint
(
:email
)
|>
unique_constraint
(
:nickname
)
|>
validate_format
(
:nickname
,
~r/^[a-zA-Z\d]+$/
)
if
changeset
.
valid?
do
hashed
=
Comeonin
.
Pbkdf2
.
hashpwsalt
(
changeset
.
changes
[
:password
])
...
...
lib/pleroma/web/twitter_api/twitter_api.ex
View file @
6529cab9
...
...
@@ -115,9 +115,9 @@ def fetch_status(user, id) do
end
end
def
follow
(%
User
{}
=
follower
,
followed_id
)
do
with
%
User
{}
=
followed
<-
Repo
.
get
(
U
ser
,
followed_id
),
{
:ok
,
follower
}
<-
User
.
follow
(
follower
,
followed
),
def
follow
(%
User
{}
=
follower
,
params
)
do
with
{
:ok
,
%
User
{}
=
followed
}
<-
get
_u
ser
(
params
),
{
:ok
,
follower
}
<-
User
.
follow
(
follower
,
followed
),
{
:ok
,
activity
}
<-
ActivityPub
.
insert
(%{
"type"
=>
"Follow"
,
"actor"
=>
follower
.
ap_id
,
...
...
@@ -131,11 +131,11 @@ def follow(%User{} = follower, followed_id) do
end
end
def
unfollow
(%
User
{}
=
follower
,
followed_id
)
do
with
%
User
{}
=
followed
<-
Repo
.
get
(
U
ser
,
followed_id
),
{
:ok
,
follower
}
<-
User
.
unfollow
(
follower
,
followed
)
def
unfollow
(%
User
{}
=
follower
,
params
)
do
with
{
:ok
,
%
User
{}
=
un
followed
}
<-
get
_u
ser
(
params
),
{
:ok
,
follower
}
<-
User
.
unfollow
(
follower
,
un
followed
)
do
{
:ok
,
follower
,
followed
}
{
:ok
,
follower
,
un
followed
}
else
err
->
err
end
...
...
@@ -266,7 +266,7 @@ def register_user(params) do
end
end
def
get_user
(
user
,
params
)
do
def
get_user
(
user
\\
nil
,
params
)
do
case
params
do
%{
"user_id"
=>
user_id
}
->
case
target
=
Repo
.
get
(
User
,
user_id
)
do
...
...
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
6529cab9
...
...
@@ -81,8 +81,8 @@ def mentions_timeline(%{assigns: %{user: user}} = conn, params) do
|>
json_reply
(
200
,
json
)
end
def
follow
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"user_id"
=>
followed_id
}
)
do
case
TwitterAPI
.
follow
(
user
,
followed_id
)
do
def
follow
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
case
TwitterAPI
.
follow
(
user
,
params
)
do
{
:ok
,
user
,
followed
,
_activity
}
->
response
=
followed
|>
UserRepresenter
.
to_json
(%{
for:
user
})
conn
...
...
@@ -91,11 +91,10 @@ def follow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do
end
end
def
unfollow
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"user_id"
=>
followed_id
})
do
case
TwitterAPI
.
unfollow
(
user
,
followed_id
)
do
{
:ok
,
user
,
followed
}
->
response
=
followed
|>
UserRepresenter
.
to_json
(%{
for:
user
})
def
unfollow
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
case
TwitterAPI
.
unfollow
(
user
,
params
)
do
{
:ok
,
user
,
unfollowed
,
}
->
response
=
unfollowed
|>
UserRepresenter
.
to_json
(%{
for:
user
})
conn
|>
json_reply
(
200
,
response
)
{
:error
,
msg
}
->
forbidden_json_reply
(
conn
,
msg
)
...
...
test/web/twitter_api/twitter_api_test.exs
View file @
6529cab9
...
...
@@ -155,32 +155,47 @@ test "fetch a single status" do
assert
status
==
ActivityRepresenter
.
to_map
(
activity
,
%{
for:
user
,
user:
actor
})
end
test
"Follow another user"
do
test
"Follow another user
using user_id
"
do
user
=
insert
(
:user
)
followed
=
insert
(
:user
)
{
:ok
,
user
,
followed
,
activity
}
=
TwitterAPI
.
follow
(
user
,
followed
.
id
)
{
:ok
,
user
,
followed
,
_activity
}
=
TwitterAPI
.
follow
(
user
,
%{
"user_id"
=>
followed
.
id
})
assert
user
.
following
==
[
User
.
ap_followers
(
followed
)]
{
:error
,
msg
}
=
TwitterAPI
.
follow
(
user
,
%{
"user_id"
=>
followed
.
id
})
assert
msg
==
"Could not follow user:
#{
followed
.
nickname
}
is already on your list."
end
user
=
Repo
.
get
(
User
,
user
.
id
)
follow
=
Repo
.
get
(
Activity
,
activity
.
id
)
test
"Follow another user using screen_name"
do
user
=
insert
(
:user
)
followed
=
insert
(
:user
)
{
:ok
,
user
,
followed
,
_activity
}
=
TwitterAPI
.
follow
(
user
,
%{
"screen_name"
=>
followed
.
nickname
})
assert
user
.
following
==
[
User
.
ap_followers
(
followed
)]
assert
follow
==
activity
{
:error
,
msg
}
=
TwitterAPI
.
follow
(
user
,
followed
.
id
)
{
:error
,
msg
}
=
TwitterAPI
.
follow
(
user
,
%{
"screen_name"
=>
followed
.
nickname
}
)
assert
msg
==
"Could not follow user:
#{
followed
.
nickname
}
is already on your list."
end
test
"Unfollow another user"
do
followed
=
insert
(
:user
)
user
=
insert
(
:user
,
%{
following:
[
User
.
ap_followers
(
followed
)]})
test
"Unfollow another user using user_id"
do
unfollowed
=
insert
(
:user
)
user
=
insert
(
:user
,
%{
following:
[
User
.
ap_followers
(
unfollowed
)]})
{
:ok
,
user
,
unfollowed
}
=
TwitterAPI
.
unfollow
(
user
,
%{
"user_id"
=>
unfollowed
.
id
})
assert
user
.
following
==
[]
{
:ok
,
user
,
_followed
}
=
TwitterAPI
.
unfollow
(
user
,
followed
.
id
)
{
:error
,
msg
}
=
TwitterAPI
.
unfollow
(
user
,
%{
"user_id"
=>
unfollowed
.
id
})
assert
msg
==
"Not subscribed!"
end
user
=
Repo
.
get
(
User
,
user
.
id
)
test
"Unfollow another user using screen_name"
do
unfollowed
=
insert
(
:user
)
user
=
insert
(
:user
,
%{
following:
[
User
.
ap_followers
(
unfollowed
)]})
{
:ok
,
user
,
unfollowed
}
=
TwitterAPI
.
unfollow
(
user
,
%{
"screen_name"
=>
unfollowed
.
nickname
})
assert
user
.
following
==
[]
{
:error
,
msg
}
=
TwitterAPI
.
unfollow
(
user
,
followed
.
id
)
{
:error
,
msg
}
=
TwitterAPI
.
unfollow
(
user
,
%{
"screen_name"
=>
unfollowed
.
nickname
})
assert
msg
==
"Not subscribed!"
end
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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