Add alias creation endpoint
This commit is contained in:
parent
f033b88121
commit
1a5b66a3d7
6 changed files with 74 additions and 3 deletions
22
lib/matrix_server_web/controllers/aliases_controller.ex
Normal file
22
lib/matrix_server_web/controllers/aliases_controller.ex
Normal file
|
@ -0,0 +1,22 @@
|
|||
defmodule MatrixServerWeb.AliasesController do
|
||||
use MatrixServerWeb, :controller
|
||||
|
||||
import MatrixServerWeb.Plug.Error
|
||||
|
||||
alias MatrixServer.Alias
|
||||
|
||||
def create(conn, %{"alias" => alias, "room_id" => room_id}) do
|
||||
case Alias.create(alias, room_id) do
|
||||
{:ok, _} ->
|
||||
conn
|
||||
|> put_status(200)
|
||||
|> json(%{})
|
||||
|
||||
{:error, cs} ->
|
||||
put_error(conn, Alias.get_error(cs))
|
||||
end
|
||||
end
|
||||
|
||||
# TODO: create error view for this?
|
||||
def create(conn, _), do: put_error(conn, :bad_json)
|
||||
end
|
|
@ -10,11 +10,15 @@ defmodule MatrixServerWeb.Plug.Error do
|
|||
unrecognized: {400, "M_UNRECOGNIZED", "Unrecognized request."},
|
||||
unknown: {400, "M_UNKNOWN", "An unknown error occurred."},
|
||||
invalid_room_state:
|
||||
{400, "M_INVALID_ROOM_STATE", "The request would result in and invalid room state."},
|
||||
{400, "M_INVALID_ROOM_STATE", "The request would leave the room in an invalid state."},
|
||||
unknown_token: {401, "M_UNKNOWN_TOKEN", "Invalid access token."},
|
||||
missing_token: {401, "M_MISSING_TOKEN", "Access token required."}
|
||||
missing_token: {401, "M_MISSING_TOKEN", "Access token required."},
|
||||
not_found: {404, "M_NOT_FOUND", "The requested resource was not found."},
|
||||
room_alias_exists: {409, "M.UNKNOWN", "The given room alias already exists."}
|
||||
}
|
||||
|
||||
def put_error(conn, {error, msg}), do: put_error(conn, error, msg)
|
||||
|
||||
def put_error(conn, error, msg \\ nil) do
|
||||
{status, errcode, default_msg} = @error_map[error]
|
||||
data = %{errcode: errcode, error: msg || default_msg}
|
||||
|
|
|
@ -33,6 +33,10 @@ defmodule MatrixServerWeb.Router do
|
|||
post "/logout", AccountController, :logout
|
||||
post "/logout/all", AccountController, :logout_all
|
||||
post "/createRoom", RoomController, :create
|
||||
|
||||
scope "/directory/room" do
|
||||
put "/:alias", AliasesController, :create
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue