diff options
author | lain <lain@soykaf.club> | 2020-08-21 16:16:42 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-08-21 16:16:42 +0200 |
commit | a2ea4d8981b751d55b819b198d66ba0e95e6d7f8 (patch) | |
tree | 73dd8446836c89e14eb95f87da690a898f813fdd | |
parent | 85561ead2546c7ff31ea37e96d44d0353bc66e38 (diff) | |
download | pleroma-a2ea4d8981b751d55b819b198d66ba0e95e6d7f8.tar.gz |
.
-rw-r--r-- | lib/pleroma/web/matrix_controller.ex | 22 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 6 |
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) |