Current section

Files

Jump to
oaspec src oaspec@openapi@spec.erl
Raw

src/oaspec@openapi@spec.erl

-module(oaspec@openapi@spec).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/openapi/spec.gleam").
-export([method_to_string/1, method_to_lower/1]).
-export_type([open_api_spec/0, info/0, server/0, components/0, security_scheme/0, security_scheme_ref/0, security_requirement/0, path_item/0, operation/0, parameter_in/0, parameter/0, request_body/0, media_type/0, response/0, http_method/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type open_api_spec() :: {open_api_spec,
binary(),
info(),
gleam@dict:dict(binary(), path_item()),
gleam@option:option(components()),
list(server()),
list(security_requirement())}.
-type info() :: {info, binary(), gleam@option:option(binary()), binary()}.
-type server() :: {server, binary(), gleam@option:option(binary())}.
-type components() :: {components,
gleam@dict:dict(binary(), oaspec@openapi@schema:schema_ref()),
gleam@dict:dict(binary(), parameter()),
gleam@dict:dict(binary(), request_body()),
gleam@dict:dict(binary(), response()),
gleam@dict:dict(binary(), security_scheme())}.
-type security_scheme() :: {api_key_scheme, binary(), binary()} |
{http_scheme, binary(), gleam@option:option(binary())} |
{o_auth2_scheme, gleam@option:option(binary())}.
-type security_scheme_ref() :: {security_scheme_ref, binary(), list(binary())}.
-type security_requirement() :: {security_requirement,
list(security_scheme_ref())}.
-type path_item() :: {path_item,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(operation()),
gleam@option:option(operation()),
gleam@option:option(operation()),
gleam@option:option(operation()),
gleam@option:option(operation()),
list(parameter())}.
-type operation() :: {operation,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
list(binary()),
list(parameter()),
gleam@option:option(request_body()),
gleam@dict:dict(binary(), response()),
boolean(),
gleam@option:option(list(security_requirement()))}.
-type parameter_in() :: in_path | in_query | in_header | in_cookie.
-type parameter() :: {parameter,
binary(),
parameter_in(),
gleam@option:option(binary()),
boolean(),
gleam@option:option(oaspec@openapi@schema:schema_ref()),
gleam@option:option(binary()),
boolean()}.
-type request_body() :: {request_body,
gleam@option:option(binary()),
gleam@dict:dict(binary(), media_type()),
boolean()}.
-type media_type() :: {media_type,
gleam@option:option(oaspec@openapi@schema:schema_ref())}.
-type response() :: {response,
gleam@option:option(binary()),
gleam@dict:dict(binary(), media_type())}.
-type http_method() :: get | post | put | delete | patch.
-file("src/oaspec/openapi/spec.gleam", 136).
?DOC(" Convert HTTP method to string.\n").
-spec method_to_string(http_method()) -> binary().
method_to_string(Method) ->
case Method of
get ->
<<"GET"/utf8>>;
post ->
<<"POST"/utf8>>;
put ->
<<"PUT"/utf8>>;
delete ->
<<"DELETE"/utf8>>;
patch ->
<<"PATCH"/utf8>>
end.
-file("src/oaspec/openapi/spec.gleam", 147).
?DOC(" Convert HTTP method to lowercase string.\n").
-spec method_to_lower(http_method()) -> binary().
method_to_lower(Method) ->
case Method of
get ->
<<"get"/utf8>>;
post ->
<<"post"/utf8>>;
put ->
<<"put"/utf8>>;
delete ->
<<"delete"/utf8>>;
patch ->
<<"patch"/utf8>>
end.