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
1e88f102
Commit
1e88f102
authored
Apr 21, 2017
by
lain
Browse files
Fix specs, add some user info.
parent
e987be2d
Changes
4
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
1e88f102
defmodule
Pleroma
.
User
do
use
Ecto
.
Schema
import
Ecto
.
Changeset
alias
Pleroma
.
{
Repo
,
User
}
import
Ecto
.
Query
alias
Pleroma
.
{
Repo
,
User
,
Activity
,
Object
}
schema
"users"
do
field
:bio
,
:string
...
...
@@ -32,6 +33,22 @@ def follow_changeset(struct, params \\ %{}) do
|>
validate_required
([
:following
])
end
def
user_info
(%
User
{}
=
user
)
do
note_count_query
=
from
a
in
Object
,
where:
fragment
(
"? @> ?"
,
a
.
data
,
^
%{
actor:
user
.
ap_id
,
type:
"Note"
}),
select:
count
(
a
.
id
)
follower_count_query
=
from
u
in
User
,
where:
fragment
(
"? @> ?"
,
u
.
following
,
^
User
.
ap_followers
(
user
)),
select:
count
(
u
.
id
)
%{
following_count:
length
(
user
.
following
),
note_count:
Repo
.
one
(
note_count_query
),
follower_count:
Repo
.
one
(
follower_count_query
)
}
end
def
register_changeset
(
struct
,
params
\\
%{})
do
changeset
=
struct
|>
cast
(
params
,
[
:bio
,
:email
,
:name
,
:nickname
,
:password
,
:password_confirmation
])
...
...
lib/pleroma/web/twitter_api/representers/user_representer.ex
View file @
1e88f102
...
...
@@ -15,6 +15,8 @@ def to_map(user, opts) do
false
end
user_info
=
User
.
user_info
(
user
)
map
=
%{
"id"
=>
user
.
id
,
"name"
=>
user
.
name
,
...
...
@@ -23,9 +25,9 @@ def to_map(user, opts) do
"following"
=>
following
,
# Fake fields
"favourites_count"
=>
0
,
"statuses_count"
=>
0
,
"friends_count"
=>
0
,
"followers_count"
=>
0
,
"statuses_count"
=>
user_info
[
:note_count
]
,
"friends_count"
=>
user_info
[
:following_count
]
,
"followers_count"
=>
user_info
[
:follower_count
]
,
"profile_image_url"
=>
image
,
"profile_image_url_https"
=>
image
,
"profile_image_url_profile_size"
=>
image
,
...
...
test/web/twitter_api/representers/user_representer_test.exs
View file @
1e88f102
...
...
@@ -19,7 +19,18 @@ test "A user with an avatar object", %{user: user} do
assert
represented
[
"profile_image_url"
]
==
image
end
test
"A user"
,
%{
user:
user
}
do
test
"A user"
do
note_activity
=
insert
(
:note_activity
)
user
=
User
.
get_cached_by_ap_id
(
note_activity
.
data
[
"actor"
])
follower
=
insert
(
:user
)
second_follower
=
insert
(
:user
)
User
.
follow
(
follower
,
user
)
User
.
follow
(
second_follower
,
user
)
User
.
follow
(
user
,
follower
)
user
=
Repo
.
get!
(
User
,
user
.
id
)
image
=
"https://placehold.it/48x48"
represented
=
%{
...
...
@@ -29,9 +40,9 @@ test "A user", %{user: user} do
"description"
=>
user
.
bio
,
# Fake fields
"favourites_count"
=>
0
,
"statuses_count"
=>
0
,
"friends_count"
=>
0
,
"followers_count"
=>
0
,
"statuses_count"
=>
1
,
"friends_count"
=>
1
,
"followers_count"
=>
2
,
"profile_image_url"
=>
image
,
"profile_image_url_https"
=>
image
,
"profile_image_url_profile_size"
=>
image
,
...
...
@@ -55,7 +66,7 @@ test "A user for a given other follower", %{user: user} do
"favourites_count"
=>
0
,
"statuses_count"
=>
0
,
"friends_count"
=>
0
,
"followers_count"
=>
0
,
"followers_count"
=>
1
,
"profile_image_url"
=>
image
,
"profile_image_url_https"
=>
image
,
"profile_image_url_profile_size"
=>
image
,
...
...
test/web/twitter_api/twitter_api_controller_test.exs
View file @
1e88f102
...
...
@@ -367,7 +367,7 @@ test "it returns errors on a problem", %{conn: conn} do
end
defp
valid_user
(
_context
)
do
{
:ok
,
user
}
=
UserBuilder
.
insert
(%{
nickname:
"lambda"
,
ap_id:
"lambda"
}
)
user
=
insert
(
:user
)
[
user:
user
]
end
...
...
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