aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-08-21 16:16:42 +0200
committerlain <lain@soykaf.club>2020-08-21 16:16:42 +0200
commita2ea4d8981b751d55b819b198d66ba0e95e6d7f8 (patch)
tree73dd8446836c89e14eb95f87da690a898f813fdd
parent85561ead2546c7ff31ea37e96d44d0353bc66e38 (diff)
downloadpleroma-a2ea4d8981b751d55b819b198d66ba0e95e6d7f8.tar.gz
.
-rw-r--r--lib/pleroma/web/matrix_controller.ex22
-rw-r--r--lib/pleroma/web/router.ex6
2 files changed, 23 insertions, 5 deletions
diff --git a/lib/pleroma/web/matrix_controller.ex b/lib/pleroma/web/matrix_controller.ex
index 749c43dcb..f499d8938 100644
--- a/lib/pleroma/web/matrix_controller.ex
+++ b/lib/pleroma/web/matrix_controller.ex
@@ -308,12 +308,17 @@ defmodule Pleroma.Web.MatrixController do
|> json(params)
end
+ defp nickname_from_matrix_id(mid) do
+ mid
+ |> String.trim_leading("@")
+ |> String.replace(":", "@")
+ |> String.trim_trailing("@#{Pleroma.Web.Endpoint.host()}")
+ end
+
def profile(conn, params) do
nickname =
params["user_id"]
- |> String.trim_leading("@")
- |> String.replace(":", "@")
- |> String.trim_trailing("@#{Pleroma.Web.Endpoint.host()}")
+ |> nickname_from_matrix_id()
user = User.get_by_nickname(nickname)
avatar = User.avatar_url(user) |> MediaProxy.url()
@@ -453,17 +458,24 @@ defmodule Pleroma.Web.MatrixController do
"event_type" => "m.room.message"
}
) do
- with %Chat{user_id: ^user_id, recipient: recipient_id} <- Chat.get_by_id(chat_id),
+ with %Chat{user_id: ^user_id, recipient: recipient_id} = chat <- Chat.get_by_id(chat_id),
%User{} = recipient <- User.get_cached_by_ap_id(recipient_id),
{:ok, activity} <- CommonAPI.post_chat_message(user, recipient, body) do
object = Object.normalize(activity, false)
+ cmr = MessageReference.for_chat_and_object(chat, object)
data = %{
- event_id: object.id
+ event_id: cmr.id
}
conn
|> json(data)
end
end
+
+ def wellknown(conn, _params) do
+ conn
+ |> put_status(404)
+ |> json("not found")
+ end
end
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index 2064fc1bd..fe299846f 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -710,6 +710,8 @@ defmodule Pleroma.Web.Router do
end
end
+ get("/.well-known/matrix/client", Pleroma.Web.MatrixController, :wellknown)
+
scope "/_matrix", Pleroma.Web do
pipe_through(:api)
get("/client/versions", MatrixController, :client_versions)
@@ -728,9 +730,13 @@ defmodule Pleroma.Web.Router do
get("/client/r0/sync", MatrixController, :sync)
post("/client/r0/keys/query", MatrixController, :key_query)
get("/client/r0/profile/:user_id", MatrixController, :profile)
+ get("/client/r0/profile/:user_id/displayname", MatrixController, :profile)
+ get("/client/r0/profile/:user_id/avatar_url", MatrixController, :profile)
get("/client/r0/joined_groups", MatrixController, :joined_groups)
get("/client/unstable/room_keys/version", MatrixController, :room_keys_version)
post("/client/r0/keys/upload", MatrixController, :key_upload)
+ # The iOS client uses this call. No idea what it is about.
+ post("/client/r0/keys/upload/:whoknows", MatrixController, :key_upload)
get("/client/r0/capabilities", MatrixController, :capabilities)
post("/client/r0/rooms/:room_id/read_markers", MatrixController, :set_read_marker)
get("/client/r0/rooms/:room_id/members", MatrixController, :room_members)