summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/application.ex12
-rw-r--r--lib/pleroma/web/mastodon_api/mastodon_api_controller.ex6
-rw-r--r--priv/static/index.html2
-rw-r--r--test/web/mastodon_api/mastodon_api_controller_test.exs19
4 files changed, 31 insertions, 8 deletions
diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index 89826f515..e1e3bcd63 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -23,6 +23,18 @@ defmodule Pleroma.Application do
limit: 2500
]
]),
+ worker(
+ Cachex,
+ [
+ :idempotency_cache,
+ [
+ default_ttl: :timer.seconds(6 * 60 * 60),
+ ttl_interval: :timer.seconds(60),
+ limit: 2500
+ ]
+ ],
+ id: :cachex_idem
+ ),
worker(Pleroma.Web.Federator, []),
worker(Pleroma.Gopher.Server, []),
worker(Pleroma.Stats, [])
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
index bbd16482a..2b4e9e72b 100644
--- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
+++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
@@ -283,13 +283,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
{:ok, activity} =
Cachex.get!(
- :user_cache,
- "idem:#{idempotency_key}",
+ :idempotency_cache,
+ idempotency_key,
fallback: fn _ -> CommonAPI.post(user, params) end
)
- Cachex.expire(:user_cache, "idem:#{idempotency_key}", :timer.seconds(5 * 60))
-
render(conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity})
end
diff --git a/priv/static/index.html b/priv/static/index.html
index 795c9e18d..cf1c24b0e 100644
--- a/priv/static/index.html
+++ b/priv/static/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Pleroma</title><link rel=stylesheet href=/static/font/css/fontello.css><link rel=stylesheet href=/static/font/css/animation.css><link href=/static/css/app.6c8da1b0ace79ad8881a0e5e716ec818.css rel=stylesheet></head><body style="display: none"><div id=app></div><script type=text/javascript src=/static/js/manifest.38e369a50eccc2857845.js></script><script type=text/javascript src=/static/js/vendor.ef2aee0b2db579c3a86a.js></script><script type=text/javascript src=/static/js/app.af121efa5ff89725b4c6.js></script></body></html> \ No newline at end of file
+<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Pleroma</title><link rel=icon type=image/png href=/favicon.png><link rel=stylesheet href=/static/font/css/fontello.css><link rel=stylesheet href=/static/font/css/animation.css><link href=/static/css/app.6c8da1b0ace79ad8881a0e5e716ec818.css rel=stylesheet></head><body style="display: none"><div id=app></div><script type=text/javascript src=/static/js/manifest.38e369a50eccc2857845.js></script><script type=text/javascript src=/static/js/vendor.ef2aee0b2db579c3a86a.js></script><script type=text/javascript src=/static/js/app.af121efa5ff89725b4c6.js></script></body></html> \ No newline at end of file
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs
index 69a0299ac..883ebc61e 100644
--- a/test/web/mastodon_api/mastodon_api_controller_test.exs
+++ b/test/web/mastodon_api/mastodon_api_controller_test.exs
@@ -75,9 +75,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
"sensitive" => "false"
})
- {:ok, ttl} = Cachex.ttl(:user_cache, "idem:#{idempotency_key}")
- # 5 Minutes
- assert ttl > :timer.seconds(5 * 60 - 1)
+ {:ok, ttl} = Cachex.ttl(:idempotency_cache, idempotency_key)
+ # Six hours
+ assert ttl > :timer.seconds(6 * 60 * 60 - 1)
assert %{"content" => "cofe", "id" => id, "spoiler_text" => "2hu", "sensitive" => false} =
json_response(conn_one, 200)
@@ -97,6 +97,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert %{"id" => second_id} = json_response(conn_two, 200)
assert id == second_id
+
+ conn_three =
+ conn
+ |> assign(:user, user)
+ |> post("/api/v1/statuses", %{
+ "status" => "cofe",
+ "spoiler_text" => "2hu",
+ "sensitive" => "false"
+ })
+
+ assert %{"id" => third_id} = json_response(conn_three, 200)
+
+ refute id == third_id
end
test "posting a sensitive status", %{conn: conn} do