diff options
Diffstat (limited to 'lib/matrix_app_service_web/controllers')
3 files changed, 44 insertions, 30 deletions
diff --git a/lib/matrix_app_service_web/controllers/v1/room_controller.ex b/lib/matrix_app_service_web/controllers/v1/room_controller.ex index cc84c48..e7af00d 100644 --- a/lib/matrix_app_service_web/controllers/v1/room_controller.ex +++ b/lib/matrix_app_service_web/controllers/v1/room_controller.ex @@ -8,7 +8,10 @@ defmodule MatrixAppServiceWeb.V1.RoomController do https://matrix.org/docs/spec/application_service/r0.1.2#get-matrix-app-v1-rooms-roomalias """ def query(conn, %{"room_alias" => room_alias}) do - adapter = Application.fetch_env!(:matrix_app_service, :room_adapter) + adapter = + conn.private[:room_adapter] || + MatrixAppServiceWeb.Endpoint.config(:room_adapter) || + raise "MatrixAppService: config key room_adapter missing" with :ok <- adapter.query_alias(room_alias) do conn diff --git a/lib/matrix_app_service_web/controllers/v1/transaction_controller.ex b/lib/matrix_app_service_web/controllers/v1/transaction_controller.ex index b6210ba..4d45819 100644 --- a/lib/matrix_app_service_web/controllers/v1/transaction_controller.ex +++ b/lib/matrix_app_service_web/controllers/v1/transaction_controller.ex @@ -19,20 +19,21 @@ defmodule MatrixAppServiceWeb.V1.TransactionController do # "user_id" => "@alice:matrix.imago.local"}], # "txn_id" => "269"} - defp create_event(%{ - "age" => age, - "content" => content, - "event_id" => event_id, - "origin_server_ts" => origin_server_ts, - "room_id" => room_id, - "sender" => sender, - "state_key" => state_key, - "type" => type, - "unsigned" => unsigned, - "user_id" => user_id - }) do - adapter = Application.fetch_env!(:matrix_app_service, :transaction_adapter) - + defp create_event( + %{ + "age" => age, + "content" => content, + "event_id" => event_id, + "origin_server_ts" => origin_server_ts, + "room_id" => room_id, + "sender" => sender, + "state_key" => state_key, + "type" => type, + "unsigned" => unsigned, + "user_id" => user_id + }, + adapter + ) do event = %MatrixAppService.Event{ age: age, content: content, @@ -49,19 +50,20 @@ defmodule MatrixAppServiceWeb.V1.TransactionController do adapter.new_event(event) end - defp create_event(%{ - "age" => age, - "content" => content, - "event_id" => event_id, - "origin_server_ts" => origin_server_ts, - "room_id" => room_id, - "sender" => sender, - "type" => type, - "unsigned" => unsigned, - "user_id" => user_id - }) do - adapter = Application.fetch_env!(:matrix_app_service, :transaction_adapter) - + defp create_event( + %{ + "age" => age, + "content" => content, + "event_id" => event_id, + "origin_server_ts" => origin_server_ts, + "room_id" => room_id, + "sender" => sender, + "type" => type, + "unsigned" => unsigned, + "user_id" => user_id + }, + adapter + ) do event = %MatrixAppService.Event{ age: age, content: content, @@ -82,7 +84,13 @@ defmodule MatrixAppServiceWeb.V1.TransactionController do https://matrix.org/docs/spec/application_service/r0.1.2#put-matrix-app-v1-transactions-txnid """ def push(conn, %{"events" => events}) do - Enum.each(events, &create_event(&1)) + adapter = + conn.private[:transaction_adapter] || + MatrixAppServiceWeb.Endpoint.config(:transaction_adapter) || + raise "MatrixAppService: config key room_adapter missing" + + Enum.each(events, &create_event(&1, adapter)) + send_resp(conn, 200, "{}") end end diff --git a/lib/matrix_app_service_web/controllers/v1/user_controller.ex b/lib/matrix_app_service_web/controllers/v1/user_controller.ex index bf3aa1e..a6e84c0 100644 --- a/lib/matrix_app_service_web/controllers/v1/user_controller.ex +++ b/lib/matrix_app_service_web/controllers/v1/user_controller.ex @@ -8,7 +8,10 @@ defmodule MatrixAppServiceWeb.V1.UserController do https://matrix.org/docs/spec/application_service/r0.1.2#get-matrix-app-v1-users-userid """ def query(conn, %{"user_id" => user_id}) do - adapter = Application.fetch_env!(:matrix_app_service, :user_adapter) + adapter = + conn.private[:user_adapter] || + MatrixAppServiceWeb.Endpoint.config(:user_adapter) || + raise "MatrixAppService: config key user_adapter missing" with :ok <- adapter.query_user(user_id) do conn |