Merge pull request #8187 from blockscout/vb-500-to-not-found

API v1 500 error convert to 404, if requested path is incorrect
pull/8188/head
Victor Baranov 1 year ago committed by GitHub
commit ec346e0ed8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      CHANGELOG.md
  2. 12
      apps/block_scout_web/lib/block_scout_web/controllers/api/rpc/rpc_translator.ex

@ -57,6 +57,7 @@
### Fixes ### Fixes
- [#8187](https://github.com/blockscout/blockscout/pull/8187) - API v1 500 error convert to 404, if requested path is incorrect
- [#7852](https://github.com/blockscout/blockscout/pull/7852) - Token balances refactoring & fixes - [#7852](https://github.com/blockscout/blockscout/pull/7852) - Token balances refactoring & fixes
- [#7872](https://github.com/blockscout/blockscout/pull/7872) - Fix pending gas price in pending tx - [#7872](https://github.com/blockscout/blockscout/pull/7872) - Fix pending gas price in pending tx
- [#7875](https://github.com/blockscout/blockscout/pull/7875) - Fix twin compiler version - [#7875](https://github.com/blockscout/blockscout/pull/7875) - Fix twin compiler version

@ -29,7 +29,7 @@ defmodule BlockScoutWeb.API.RPC.RPCTranslator do
end end
def call(%Conn{params: %{"module" => module, "action" => action}} = conn, translations) do def call(%Conn{params: %{"module" => module, "action" => action}} = conn, translations) do
with true <- valid_api_request_path(conn), with {:valid_api_request, true} <- {:valid_api_request, valid_api_request_path(conn)},
{:ok, {controller, write_actions}} <- translate_module(translations, module), {:ok, {controller, write_actions}} <- translate_module(translations, module),
{:ok, action} <- translate_action(action), {:ok, action} <- translate_action(action),
true <- action_accessed?(action, write_actions), true <- action_accessed?(action, write_actions),
@ -58,6 +58,13 @@ defmodule BlockScoutWeb.API.RPC.RPCTranslator do
:rate_limit_reached -> :rate_limit_reached ->
AccessHelper.handle_rate_limit_deny(conn) AccessHelper.handle_rate_limit_deny(conn)
{:valid_api_request, false} ->
conn
|> put_status(404)
|> put_view(RPCView)
|> Controller.render(:error, error: "Not found")
|> halt()
_ -> _ ->
conn conn
|> put_status(500) |> put_status(500)
@ -119,7 +126,8 @@ defmodule BlockScoutWeb.API.RPC.RPCTranslator do
end end
defp valid_api_request_path(conn) do defp valid_api_request_path(conn) do
if conn.request_path == "/api" || conn.request_path == "/api/v1" do if conn.request_path == "/api" || conn.request_path == "/api/" || conn.request_path == "/api/v1" ||
conn.request_path == "/api/v1/" do
true true
else else
false false

Loading…
Cancel
Save