MatrixAppService (MatrixAppService v0.1.0) View Source
Library that adds Matrix Application Service functionalities to Phoenix applications.
Installation
Add this library to your dependencies in mix.exs
defp deps do
[...]
{:matrix_app_service, "~> 0.1.0"}
end
Usage
Inject routes
In your Phoenix Router:
require MatrixAppServiceWeb.Router
MatrixAppServiceWeb.Router.routes()
Write adapters
Create one or multiple modules that implement the following modules:
MatrixAppService.Adapter.Room
, MatrixAppService.Adapter.User
,
MatrixAppService.Adapter.Transaction
.
For instance:
@behaviour MatrixAppService.Adapter.Room
@impl MatrixAppService.Adapter.Room
def query_alias(room_alias) do
# Do something with the room alias
# If the room exists, return :ok
end
@behaviour MatrixAppService.Adapter.User
@impl MatrixAppService.Adapter.User
def query_user(user_id) do
# Do something with the user ID
# If the user exists, return :ok
end
@behaviour MatrixAppService.Adapter.Transaction
@impl MatrixAppService.Adapter.Transaction
def new_event(%MatrixAppService.Event{type: type, content: content}) do
# Do something with the event
end
Write configuration
config :matrix_app_service,
transaction_adapter: App.Matrix.Transaction,
room_adapter: App.Matrix.Room,
user_adapter: App.Matrix.User,
path: "/matrix"
base_url: "http://synapse:8008",
access_token: "access token",
homeserver_token: "homeserver token"
Use the Client-Server API
You can use the functions in MatrixAppService.Client