diff options
Diffstat (limited to 'lib/matrix_app_service/client.ex')
-rw-r--r-- | lib/matrix_app_service/client.ex | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/matrix_app_service/client.ex b/lib/matrix_app_service/client.ex index 998b377..c32cf00 100644 --- a/lib/matrix_app_service/client.ex +++ b/lib/matrix_app_service/client.ex @@ -1,12 +1,25 @@ defmodule MatrixAppService.Client do @moduledoc """ + Convenience wrapper around `Polyjuice.Client.LowLevel`. + Library users can use the wrapped functions or call `user/1` and pass the + returned struct to Polyjuice functions. """ @type client_options :: {:base_url, String.t()} | MatrixAppService.Client.LowLevel.create_opts() @doc """ + Returns a client for the application service. + The client gets its homeserver URL and access token from configuration, by + default. + Different options can be provided to override the defaults, those are: + + * `:base_url`: homerver URL + * `:acces_token`: access token + * `:device_id`: device ID + * `:user_id`: user ID + * `:storage`: a `t:Polyjuice.Client.Storage.t/0` """ @spec client([client_options()]) :: Polyjuice.Client.LowLevel.t() @@ -25,7 +38,11 @@ defmodule MatrixAppService.Client do end @doc """ + Creates a Matrix room. + Arguments: + 1. `options`: see `Polyjuice.Client.Room.create_room/2` + 2. `client_options`: see `client/1` """ @spec create_room(Keyword.t()) :: {:ok, String.t()} | Any def create_room(options \\ [], client_options \\ []) do @@ -34,7 +51,12 @@ defmodule MatrixAppService.Client do end @doc """ + Creates a new alias for a Matrix room. + Arguments: + 1. `room_id`: room ID + 2. `room_alias`: room alias + 3. `client_options`: see `client/1` """ @spec create_alias(String.t(), String.t(), client_options()) :: {:ok, String.t()} | Any def create_alias(room_id, room_alias, client_options \\ []) do @@ -43,7 +65,31 @@ defmodule MatrixAppService.Client do end @doc """ + Sends a message to a Matrix room. + + Arguments: + 1. `room_id`: room ID + 2. `msg`: see `Polyjuice.Client.Room.send_message/3` + 3. `client_options`: see `client/1` + """ + @spec send_message(String.t(), String.t(), client_options()) :: {:ok, String.t()} | Any + def send_message(room_id, msg, client_options \\ []) do + client(client_options) + |> Polyjuice.Client.Room.send_message(room_id, msg) + end + + @doc """ + Registers a new Matrix user. + Arguments: + 1. `opts`: a keyword list that can contain these keys: + * `:inhibit_login`: true + * `:device_id`: device ID, defaults to `"APP_SERVICE"` + * `:initial_device_display_name`: device name, defaults to + `"ApplicationService"` + * `:kind`: kind of account to register, defaults to `"user"`, can also be + `"guest"` + 2. `client_options`: see `client/1` """ @spec register(Polyjuice.Client.LowLevel.register_opts(), client_options()) :: {:ok, String.t()} | Any |