defmodule PostlandWeb.InboxController do use PostlandWeb, :controller require Logger alias ActivityPub.Headers alias Postland.Activities def post(conn, params) do if Headers.verify(conn.method, conn.request_path, conn.req_headers, conn.assigns.raw_body) && Postland.Permissions.permitted?(params) do case Activities.process_activity(params) do {:ok, _activity} -> send_resp(conn, 200, Jason.encode!(params)) error -> Logger.error(error) send_resp(conn, 422, "unprocessable_entity") end else Logger.info("Failed to verify type=#{Map.get(params, "type")}") send_resp(conn, 403, "forbidden") end |> halt() end end