summaryrefslogtreecommitdiff
path: root/lib/matrix_app_service_web/controllers/v1/transaction_controller.ex
diff options
context:
space:
mode:
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.ex64
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