refactor: extract base_url helper and deduplicate OAuth metadata in WellKnownController
This commit is contained in:
parent
0bb76dbe68
commit
e370924083
1 changed files with 24 additions and 44 deletions
|
|
@ -4,74 +4,41 @@ defmodule ToweropsWeb.WellKnownController do
|
|||
use ToweropsWeb, :controller
|
||||
|
||||
def api_catalog(conn, _params) do
|
||||
base_url = ToweropsWeb.Endpoint.url()
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/linkset+json")
|
||||
|> json(%{
|
||||
"linkset" => [
|
||||
%{
|
||||
"anchor" => "#{base_url}/api/v1",
|
||||
"service-doc" => [%{"href" => "#{base_url}/docs/api"}],
|
||||
"service-desc" => [%{"href" => "#{base_url}/docs/api", "type" => "text/html"}],
|
||||
"status" => [%{"href" => "#{base_url}/health"}]
|
||||
"anchor" => "#{base_url()}/api/v1",
|
||||
"service-doc" => [%{"href" => "#{base_url()}/docs/api"}],
|
||||
"service-desc" => [%{"href" => "#{base_url()}/docs/api", "type" => "text/html"}],
|
||||
"status" => [%{"href" => "#{base_url()}/health"}]
|
||||
}
|
||||
]
|
||||
})
|
||||
end
|
||||
|
||||
def openid_configuration(conn, _params) do
|
||||
base_url = ToweropsWeb.Endpoint.url()
|
||||
|
||||
json(conn, %{
|
||||
"issuer" => base_url,
|
||||
"authorization_endpoint" => "#{base_url}/oauth/authorize",
|
||||
"token_endpoint" => "#{base_url}/oauth/token",
|
||||
"jwks_uri" => "#{base_url}/.well-known/jwks.json",
|
||||
"grant_types_supported" => ["authorization_code"],
|
||||
"response_types_supported" => ["code"]
|
||||
})
|
||||
json(conn, oauth_server_metadata())
|
||||
end
|
||||
|
||||
def oauth_authorization_server(conn, _params) do
|
||||
base_url = ToweropsWeb.Endpoint.url()
|
||||
|
||||
json(conn, %{
|
||||
"issuer" => base_url,
|
||||
"authorization_endpoint" => "#{base_url}/oauth/authorize",
|
||||
"token_endpoint" => "#{base_url}/oauth/token",
|
||||
"jwks_uri" => "#{base_url}/.well-known/jwks.json",
|
||||
"grant_types_supported" => ["authorization_code"],
|
||||
"response_types_supported" => ["code"]
|
||||
})
|
||||
json(conn, oauth_server_metadata())
|
||||
end
|
||||
|
||||
def oauth_protected_resource(conn, _params) do
|
||||
base_url = ToweropsWeb.Endpoint.url()
|
||||
|
||||
json(conn, %{
|
||||
"resource" => "#{base_url}/api/v1",
|
||||
"authorization_servers" => [base_url],
|
||||
"resource" => "#{base_url()}/api/v1",
|
||||
"authorization_servers" => [base_url()],
|
||||
"scopes_supported" => ["read", "write"]
|
||||
})
|
||||
end
|
||||
|
||||
def mcp_server_card(conn, _params) do
|
||||
base_url = ToweropsWeb.Endpoint.url()
|
||||
|
||||
json(conn, %{
|
||||
"serverInfo" => %{
|
||||
"name" => "TowerOps",
|
||||
"version" => "1.0.0"
|
||||
},
|
||||
"transport" => %{
|
||||
"endpoint" => "#{base_url}/mcp"
|
||||
},
|
||||
"capabilities" => %{
|
||||
"tools" => %{},
|
||||
"resources" => %{},
|
||||
"prompts" => %{}
|
||||
}
|
||||
"serverInfo" => %{"name" => "TowerOps", "version" => "1.0.0"},
|
||||
"transport" => %{"endpoint" => "#{base_url()}/mcp"},
|
||||
"capabilities" => %{"tools" => %{}, "resources" => %{}, "prompts" => %{}}
|
||||
})
|
||||
end
|
||||
|
||||
|
|
@ -81,4 +48,17 @@ defmodule ToweropsWeb.WellKnownController do
|
|||
"skills" => []
|
||||
})
|
||||
end
|
||||
|
||||
defp base_url, do: ToweropsWeb.Endpoint.url()
|
||||
|
||||
defp oauth_server_metadata do
|
||||
%{
|
||||
"issuer" => base_url(),
|
||||
"authorization_endpoint" => "#{base_url()}/oauth/authorize",
|
||||
"token_endpoint" => "#{base_url()}/oauth/token",
|
||||
"jwks_uri" => "#{base_url()}/.well-known/jwks.json",
|
||||
"grant_types_supported" => ["authorization_code"],
|
||||
"response_types_supported" => ["code"]
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue