mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-03-22 01:41:57 +00:00
Why: * In order to manage a large number of Firezone Sites, Resources, Policies, etc... a REST API is needed as clicking through the UI is too time consuming, as well as prone to error. By providing a REST API Firezone customers will be able to manage things within their Firezone accounts with code.
59 lines
1.1 KiB
Elixir
59 lines
1.1 KiB
Elixir
defmodule API.GatewayGroupJSON do
|
|
alias API.Pagination
|
|
alias Domain.Gateways
|
|
|
|
@doc """
|
|
Renders a list of Sites / Gateway Groups.
|
|
"""
|
|
def index(%{gateway_groups: gateway_groups, metadata: metadata}) do
|
|
%{
|
|
data: Enum.map(gateway_groups, &data/1),
|
|
metadata: Pagination.metadata(metadata)
|
|
}
|
|
end
|
|
|
|
@doc """
|
|
Render a single Site / Gateway Group
|
|
"""
|
|
def show(%{gateway_group: group}) do
|
|
%{data: data(group)}
|
|
end
|
|
|
|
@doc """
|
|
Render a Gateway Group Token
|
|
"""
|
|
def token(%{gateway_token: token, encoded_token: encoded_token}) do
|
|
%{
|
|
data: %{
|
|
id: token.id,
|
|
token: encoded_token
|
|
}
|
|
}
|
|
end
|
|
|
|
@doc """
|
|
Render a deleted Gateway Group Token
|
|
"""
|
|
def deleted_token(%{gateway_token: token}) do
|
|
%{
|
|
data: %{
|
|
id: token.id
|
|
}
|
|
}
|
|
end
|
|
|
|
@doc """
|
|
Render all deleted Gateway Group Tokens
|
|
"""
|
|
def deleted_tokens(%{tokens: tokens}) do
|
|
%{data: for(token <- tokens, do: %{id: token.id})}
|
|
end
|
|
|
|
defp data(%Gateways.Group{} = group) do
|
|
%{
|
|
id: group.id,
|
|
name: group.name
|
|
}
|
|
end
|
|
end
|