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
Calv
pleroma
Commits
58fc8b55
Commit
58fc8b55
authored
Jun 20, 2017
by
dtluna
Browse files
Render errors using ErrorView
parent
34d3a90b
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
58fc8b55
defmodule
Pleroma
.
Web
.
TwitterAPI
.
Controller
do
use
Pleroma
.
Web
,
:controller
alias
Pleroma
.
Web
.
TwitterAPI
.
{
StatusView
,
TwitterAPI
,
UserView
}
alias
Pleroma
.
Web
.
TwitterAPI
.
{
ErrorView
,
StatusView
,
TwitterAPI
,
UserView
}
alias
Pleroma
.
{
Web
,
Repo
,
Activity
}
alias
Pleroma
.
Web
.
ActivityPub
.
ActivityPub
alias
Ecto
.
Changeset
...
...
@@ -74,7 +74,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
case
TwitterAPI
.
follow
(
user
,
params
)
do
{
:ok
,
user
,
followed
,
_activity
}
->
render
(
conn
,
UserView
,
"show.json"
,
%{
user:
followed
,
for:
user
})
{
:error
,
msg
}
->
forbidden_
json_
reply
(
conn
,
msg
)
{
:error
,
msg
}
->
forbidden_reply
(
conn
,
msg
)
end
end
...
...
@@ -82,7 +82,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
case
TwitterAPI
.
unfollow
(
user
,
params
)
do
{
:ok
,
user
,
unfollowed
}
->
render
(
conn
,
UserView
,
"show.json"
,
%{
user:
unfollowed
,
for:
user
})
{
:error
,
msg
}
->
forbidden_
json_
reply
(
conn
,
msg
)
{
:error
,
msg
}
->
forbidden_reply
(
conn
,
msg
)
end
end
...
...
@@ -115,9 +115,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
def
upload_json
(
conn
,
%{
"media"
=>
media
})
do
response
=
TwitterAPI
.
upload
(
media
,
"json"
)
conn
|>
json_reply
(
200
,
response
)
json
(
conn
,
TwitterAPI
.
upload
(
media
,
"json"
))
end
def
config
(
conn
,
_params
)
do
...
...
@@ -157,8 +155,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
render
(
conn
,
UserView
,
"show.json"
,
%{
user:
user
})
else
{
:error
,
errors
}
->
conn
|>
json_reply
(
400
,
Poison
.
encode!
(
errors
))
bad_request_reply
(
conn
,
Poison
.
encode!
(
errors
))
end
end
...
...
@@ -171,30 +168,24 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
def
external_profile
(%{
assigns:
%{
user:
current_user
}}
=
conn
,
%{
"profileurl"
=>
uri
})
do
with
{
:ok
,
user_map
}
<-
TwitterAPI
.
get_external_profile
(
current_user
,
uri
),
response
<-
Poison
.
encode!
(
user_map
)
do
conn
|>
json_reply
(
200
,
response
)
with
{
:ok
,
user_map
}
<-
TwitterAPI
.
get_external_profile
(
current_user
,
uri
)
do
json
(
conn
,
user_map
)
end
end
defp
bad_request_reply
(
conn
,
error_message
)
do
json
=
error_json
(
conn
,
error_message
)
json_reply
(
conn
,
400
,
json
)
end
defp
json_reply
(
conn
,
status
,
json
)
do
defp
bad_request_reply
(
conn
,
message
)
do
conn
|>
put_
resp_content_type
(
"application/json"
)
|>
s
end
_resp
(
status
,
json
)
|>
put_
status
(
:bad_request
)
|>
r
end
er_error
(
message
)
end
defp
forbidden_json_reply
(
conn
,
error_message
)
do
json
=
error_json
(
conn
,
error_message
)
json_reply
(
conn
,
403
,
json
)
defp
forbidden_reply
(
conn
,
message
)
do
conn
|>
put_status
(
:forbidden
)
|>
render_error
(
message
)
end
defp
error
_json
(
conn
,
error_
message
)
do
%{
"error"
=>
error_message
,
"
request
"
=>
conn
.
request_path
}
|>
Poison
.
encode!
defp
render_
error
(
conn
,
message
)
do
render
(
conn
,
ErrorView
,
"error.json"
,
%{
request
_path:
conn
.
request_path
,
message:
message
})
end
end
lib/pleroma/web/twitter_api/views/error_view.ex
0 → 100644
View file @
58fc8b55
defmodule
Pleroma
.
Web
.
TwitterAPI
.
ErrorView
do
use
Pleroma
.
Web
,
:view
def
render
(
"error.json"
,
%{
request_path:
request_path
,
message:
message
})
do
%{
error:
message
,
request:
request_path
}
end
end
test/web/twitter_api/views/error_view_test.exs
0 → 100644
View file @
58fc8b55
defmodule
Pleroma
.
Web
.
TwitterAPI
.
ErrorViewTest
do
use
Pleroma
.
DataCase
alias
Pleroma
.
Web
.
TwitterAPI
.
ErrorView
test
"render an error"
do
path
=
"/labor_theory_of_value"
message
=
"Labor theory of value is invalid!"
map
=
%{
request_path:
path
,
message:
message
}
expected_object
=
%{
request:
path
,
error:
message
}
assert
expected_object
==
ErrorView
.
render
(
"error.json"
,
map
)
end
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