Respond with a 404 Not implemented JSON error message
authorAaron Tinio <aptinio@gmail.com>
Tue, 21 May 2019 01:40:29 +0000 (09:40 +0800)
committerAaron Tinio <aptinio@gmail.com>
Tue, 21 May 2019 23:15:52 +0000 (07:15 +0800)
when requested API is not implemented

CHANGELOG.md
lib/pleroma/web/router.ex
test/web/fallback_test.exs

index 256df91b7250ec44acfd97adf03a1ea34689e4e4..2ed380102e94978a07985c0cff05afc8fa3f9eaf 100644 (file)
@@ -74,6 +74,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Hide deactivated users and their statuses
 - Posts which are marked sensitive or tagged nsfw no longer have link previews.
 - HTTP connection timeout is now set to 10 seconds.
+- Respond with a 404 Not implemented JSON error message when requested API is not implemented
 
 ### Fixed
 - Added an FTS index on objects. Running `vacuum analyze` and setting a larger `work_mem` is recommended.
index 4c29b24eb47d465bc838c575e42566ab3f8e5632..49e28cc2d6fea02223f03222d869fe7930b69bec 100644 (file)
@@ -710,6 +710,7 @@ defmodule Pleroma.Web.Router do
   scope "/", Fallback do
     get("/registration/:token", RedirectController, :registration_page)
     get("/:maybe_nickname_or_id", RedirectController, :redirector_with_meta)
+    get("/api*path", RedirectController, :api_not_implemented)
     get("/*path", RedirectController, :redirector)
 
     options("/*path", RedirectController, :empty)
@@ -721,6 +722,12 @@ defmodule Fallback.RedirectController do
   alias Pleroma.User
   alias Pleroma.Web.Metadata
 
+  def api_not_implemented(conn, _params) do
+    conn
+    |> put_status(404)
+    |> json(%{error: "Not implemented"})
+  end
+
   def redirector(conn, _params, code \\ 200) do
     conn
     |> put_resp_content_type("text/html")
index 514923a20009f9023ff5c74ce540a97209a11bd3..cc78b3ae157ac7d3045a138dd9f137d72ceac6de 100644 (file)
@@ -24,6 +24,12 @@ defmodule Pleroma.Web.FallbackTest do
            |> html_response(200) =~ "<!--server-generated-meta-->"
   end
 
+  test "GET /api*path", %{conn: conn} do
+    assert conn
+           |> get("/api/foo")
+           |> json_response(404) == %{"error" => "Not implemented"}
+  end
+
   test "GET /*path", %{conn: conn} do
     assert conn
            |> get("/foo")