Current section

Files

Jump to
oapi_generator lib open_api spec link.ex
Raw

lib/open_api/spec/link.ex

defmodule OpenAPI.Spec.Link do
@moduledoc false
import OpenAPI.Spec.Helper
alias OpenAPI.Spec.Server
@type t :: %__MODULE__{
operation_ref: String.t() | nil,
operation_id: String.t() | nil,
parameters: %{optional(String.t()) => any},
request_body: any,
description: String.t() | nil,
server: Server.t() | nil
}
defstruct [
:operation_ref,
:operation_id,
:parameters,
:request_body,
:description,
:server
]
@spec decode(map, map) :: {map, t}
def decode(state, yaml) do
{state, server} = decode_server(state, yaml)
link = %__MODULE__{
description: Map.get(yaml, "description"),
operation_id: Map.get(yaml, "operationId"),
operation_ref: Map.get(yaml, "operationRef"),
parameters: Map.get(yaml, "parameters"),
request_body: Map.get(yaml, "requestBody"),
server: server
}
{state, link}
end
@spec decode_server(map, map) :: {map, Server.t() | nil}
def decode_server(state, %{"server" => server}) do
with_path(state, server, "server", &Server.decode/2)
end
def decode_server(state, _yaml), do: {state, nil}
end