Add federation API
Add signing keys fed API request
This commit is contained in:
parent
e0df546c6f
commit
1e53776a8d
7 changed files with 41 additions and 6 deletions
|
@ -33,7 +33,7 @@ defmodule MatrixServer do
|
|||
def default_room_version, do: "7"
|
||||
|
||||
def get_domain(id) do
|
||||
case String.split(id, ":") do
|
||||
case String.split(id, ":", parts: 2) do
|
||||
[_, server_name] -> server_name
|
||||
_ -> nil
|
||||
end
|
||||
|
|
|
@ -102,7 +102,7 @@ defmodule MatrixServer.Account do
|
|||
end
|
||||
|
||||
defp try_get_localpart("@" <> rest = user_id) do
|
||||
case String.split(rest, ":") do
|
||||
case String.split(rest, ":", parts: 2) do
|
||||
[localpart, _] -> localpart
|
||||
_ -> user_id
|
||||
end
|
||||
|
|
|
@ -13,7 +13,8 @@ defmodule MatrixServer.Application do
|
|||
MatrixServerWeb.Endpoint,
|
||||
{Registry, keys: :unique, name: MatrixServer.RoomServer.Registry},
|
||||
{DynamicSupervisor, name: MatrixServer.RoomServer.Supervisor, strategy: :one_for_one},
|
||||
MatrixServer.SigningServer
|
||||
MatrixServer.SigningServer,
|
||||
{Finch, name: MatrixServerWeb.HTTPClient}
|
||||
]
|
||||
|
||||
Supervisor.start_link(children, name: MatrixServer.Supervisor, strategy: :one_for_one)
|
||||
|
|
23
lib/matrix_server_web/federation_client.ex
Normal file
23
lib/matrix_server_web/federation_client.ex
Normal file
|
@ -0,0 +1,23 @@
|
|||
defmodule MatrixServerWeb.FederationClient do
|
||||
use Tesla
|
||||
|
||||
alias MatrixServerWeb.Endpoint
|
||||
alias MatrixServerWeb.Router.Helpers, as: RouteHelpers
|
||||
|
||||
# TODO: Maybe create database-backed homeserver struct to pass to client function.
|
||||
|
||||
@middleware [
|
||||
{Tesla.Middleware.Headers, [{"Content-Type", "application/json"}]},
|
||||
Tesla.Middleware.JSON
|
||||
]
|
||||
|
||||
@adapter {Tesla.Adapter.Finch, name: MatrixServerWeb.HTTPClient}
|
||||
|
||||
def client(server_name) do
|
||||
Tesla.client([{Tesla.Middleware.BaseUrl, server_name} | @middleware], @adapter)
|
||||
end
|
||||
|
||||
def get_signing_keys(client) do
|
||||
Tesla.get(client, RouteHelpers.key_path(Endpoint, :get_signing_keys))
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue