Federate client profile requests
This commit is contained in:
parent
213980a5be
commit
f565383468
5 changed files with 125 additions and 42 deletions
|
@ -1,7 +1,13 @@
|
|||
defmodule ArchitexWeb.Federation.Request.GetSigningKeys do
|
||||
use Ecto.Schema
|
||||
use ArchitexWeb.Request
|
||||
|
||||
import Ecto.Changeset
|
||||
@type t :: %__MODULE__{
|
||||
server_name: String.t(),
|
||||
verify_keys: %{optional(String.t()) => %{String.t() => String.t()}},
|
||||
old_verify_keys: %{optional(String.t()) => map()},
|
||||
signatures: %{optional(String.t()) => %{optional(String.t()) => String.t()}},
|
||||
valid_until_ts: integer()
|
||||
}
|
||||
|
||||
@primary_key false
|
||||
embedded_schema do
|
||||
|
@ -12,17 +18,16 @@ defmodule ArchitexWeb.Federation.Request.GetSigningKeys do
|
|||
field :valid_until_ts, :integer
|
||||
end
|
||||
|
||||
def changeset(params) do
|
||||
# TODO: There must be a better way to validate embedded maps?
|
||||
%__MODULE__{}
|
||||
def changeset(data, params) do
|
||||
data
|
||||
|> cast(params, [:server_name, :verify_keys, :old_verify_keys, :signatures, :valid_until_ts])
|
||||
|> validate_required([:server_name, :verify_keys, :valid_until_ts])
|
||||
|> Architex.validate_change_simple(:verify_keys, fn map ->
|
||||
|> Architex.validate_change_truthy(:verify_keys, fn map ->
|
||||
Enum.all?(map, fn {_, map} ->
|
||||
is_map_key(map, "key")
|
||||
end)
|
||||
end)
|
||||
|> Architex.validate_change_simple(:old_verify_keys, fn map ->
|
||||
|> Architex.validate_change_truthy(:old_verify_keys, fn map ->
|
||||
Enum.all?(map, fn
|
||||
{_, %{"key" => key, "expired_ts" => expired_ts}}
|
||||
when is_binary(key) and is_integer(expired_ts) ->
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue