diff options
Diffstat (limited to 'lib/matrix_app_service_web/controllers/v1/transaction_controller.ex')
-rw-r--r-- | lib/matrix_app_service_web/controllers/v1/transaction_controller.ex | 64 |
1 files changed, 36 insertions, 28 deletions
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 |