aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/controller_helper.ex
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2019-08-02 19:53:08 +0200
committerlain <lain@soykaf.club>2019-08-02 19:53:08 +0200
commiteee98aaa738c1aa5f2e4203a61b67648d62965c8 (patch)
tree47a25c269f81a514359feffe6f3e16534717a73f /lib/pleroma/web/controller_helper.ex
parent56b1c3af13c9519e13da688bdbbfdd8d69cda4ac (diff)
downloadpleroma-eee98aaa738c1aa5f2e4203a61b67648d62965c8.tar.gz
Pleroma API: Add endpoint to get conversation statuses.
Diffstat (limited to 'lib/pleroma/web/controller_helper.ex')
-rw-r--r--lib/pleroma/web/controller_helper.ex76
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex
index 8a753bb4f..eeac9f503 100644
--- a/lib/pleroma/web/controller_helper.ex
+++ b/lib/pleroma/web/controller_helper.ex
@@ -33,4 +33,80 @@ defmodule Pleroma.Web.ControllerHelper do
end
defp param_to_integer(_, default), do: default
+
+ def add_link_headers(
+ conn,
+ method,
+ activities,
+ param \\ nil,
+ params \\ %{},
+ func3 \\ nil,
+ func4 \\ nil
+ ) do
+ params =
+ conn.params
+ |> Map.drop(["since_id", "max_id", "min_id"])
+ |> Map.merge(params)
+
+ last = List.last(activities)
+
+ func3 = func3 || (&mastodon_api_url/3)
+ func4 = func4 || (&mastodon_api_url/4)
+
+ if last do
+ max_id = last.id
+
+ limit =
+ params
+ |> Map.get("limit", "20")
+ |> String.to_integer()
+
+ min_id =
+ if length(activities) <= limit do
+ activities
+ |> List.first()
+ |> Map.get(:id)
+ else
+ activities
+ |> Enum.at(limit * -1)
+ |> Map.get(:id)
+ end
+
+ {next_url, prev_url} =
+ if param do
+ {
+ func4.(
+ Pleroma.Web.Endpoint,
+ method,
+ param,
+ Map.merge(params, %{max_id: max_id})
+ ),
+ func4.(
+ Pleroma.Web.Endpoint,
+ method,
+ param,
+ Map.merge(params, %{min_id: min_id})
+ )
+ }
+ else
+ {
+ func3.(
+ Pleroma.Web.Endpoint,
+ method,
+ Map.merge(params, %{max_id: max_id})
+ ),
+ func3.(
+ Pleroma.Web.Endpoint,
+ method,
+ Map.merge(params, %{min_id: min_id})
+ )
+ }
+ end
+
+ conn
+ |> put_resp_header("link", "<#{next_url}>; rel=\"next\", <#{prev_url}>; rel=\"prev\"")
+ else
+ conn
+ end
+ end
end