defmodule OpenApiSpex.Server do @moduledoc """ Defines the `OpenApiSpex.Server.t` type. """ alias OpenApiSpex.{Server, ServerVariable} @enforce_keys :url defstruct [ :url, :description, :extensions, variables: %{} ] @typedoc """ [Server Object](https://swagger.io/specification/#serverObject) An object representing a Server. """ @type t :: %Server{ url: String.t(), description: String.t() | nil, variables: %{String.t() => ServerVariable.t()}, extensions: %{String.t() => any()} | nil } @doc """ Builds a Server from a phoenix Endpoint module """ @deprecated "Use from_endpoint/1 instead" @spec from_endpoint(module, ignored :: any()) :: t def from_endpoint(endpoint, _opts) do from_endpoint(endpoint) end @doc """ Builds a Server from a phoenix Endpoint module """ @spec from_endpoint(module) :: t def from_endpoint(endpoint) do uri = endpoint.struct_url() path = endpoint.path("") || "/" uri = %{uri | path: path} %Server{ url: URI.to_string(uri) } end end