Current section
Files
Jump to
Current section
Files
src/nori@security.erl
-module(nori@security).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/nori/security.gleam").
-export([api_key_location_to_string/1, parse_api_key_location/1, empty_oauth_flows/0, api_key_header/1, bearer/0, bearer_jwt/0, basic_auth/0]).
-export_type([security_scheme/0, api_key_location/0, o_auth_flows/0, implicit_o_auth_flow/0, password_o_auth_flow/0, client_credentials_o_auth_flow/0, authorization_code_o_auth_flow/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.
?MODULEDOC(
" Security types for OpenAPI specifications.\n"
"\n"
" Defines security schemes and requirements.\n"
).
-type security_scheme() :: {api_key_security_scheme,
binary(),
api_key_location(),
gleam@option:option(binary()),
gleam@dict:dict(binary(), gleam@json:json())} |
{http_security_scheme,
binary(),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@dict:dict(binary(), gleam@json:json())} |
{mutual_tls_security_scheme,
gleam@option:option(binary()),
gleam@dict:dict(binary(), gleam@json:json())} |
{o_auth2_security_scheme,
o_auth_flows(),
gleam@option:option(binary()),
gleam@dict:dict(binary(), gleam@json:json())} |
{open_id_connect_security_scheme,
binary(),
gleam@option:option(binary()),
gleam@dict:dict(binary(), gleam@json:json())}.
-type api_key_location() :: in_query | in_header | in_cookie.
-type o_auth_flows() :: {o_auth_flows,
gleam@option:option(implicit_o_auth_flow()),
gleam@option:option(password_o_auth_flow()),
gleam@option:option(client_credentials_o_auth_flow()),
gleam@option:option(authorization_code_o_auth_flow()),
gleam@dict:dict(binary(), gleam@json:json())}.
-type implicit_o_auth_flow() :: {implicit_o_auth_flow,
binary(),
gleam@option:option(binary()),
gleam@dict:dict(binary(), binary()),
gleam@dict:dict(binary(), gleam@json:json())}.
-type password_o_auth_flow() :: {password_o_auth_flow,
binary(),
gleam@option:option(binary()),
gleam@dict:dict(binary(), binary()),
gleam@dict:dict(binary(), gleam@json:json())}.
-type client_credentials_o_auth_flow() :: {client_credentials_o_auth_flow,
binary(),
gleam@option:option(binary()),
gleam@dict:dict(binary(), binary()),
gleam@dict:dict(binary(), gleam@json:json())}.
-type authorization_code_o_auth_flow() :: {authorization_code_o_auth_flow,
binary(),
binary(),
gleam@option:option(binary()),
gleam@dict:dict(binary(), binary()),
gleam@dict:dict(binary(), gleam@json:json())}.
-file("src/nori/security.gleam", 147).
?DOC(" Converts an `ApiKeyLocation` to its string representation.\n").
-spec api_key_location_to_string(api_key_location()) -> binary().
api_key_location_to_string(Location) ->
case Location of
in_query ->
<<"query"/utf8>>;
in_header ->
<<"header"/utf8>>;
in_cookie ->
<<"cookie"/utf8>>
end.
-file("src/nori/security.gleam", 156).
?DOC(" Parses an API key location string.\n").
-spec parse_api_key_location(binary()) -> {ok, api_key_location()} |
{error, nil}.
parse_api_key_location(S) ->
case S of
<<"query"/utf8>> ->
{ok, in_query};
<<"header"/utf8>> ->
{ok, in_header};
<<"cookie"/utf8>> ->
{ok, in_cookie};
_ ->
{error, nil}
end.
-file("src/nori/security.gleam", 166).
?DOC(" Creates an empty `OAuthFlows`.\n").
-spec empty_oauth_flows() -> o_auth_flows().
empty_oauth_flows() ->
{o_auth_flows, none, none, none, none, maps:new()}.
-file("src/nori/security.gleam", 177).
?DOC(" Creates an API key security scheme in header.\n").
-spec api_key_header(binary()) -> security_scheme().
api_key_header(Name) ->
{api_key_security_scheme, Name, in_header, none, maps:new()}.
-file("src/nori/security.gleam", 187).
?DOC(" Creates a Bearer token security scheme.\n").
-spec bearer() -> security_scheme().
bearer() ->
{http_security_scheme, <<"bearer"/utf8>>, none, none, maps:new()}.
-file("src/nori/security.gleam", 197).
?DOC(" Creates a Bearer JWT security scheme.\n").
-spec bearer_jwt() -> security_scheme().
bearer_jwt() ->
{http_security_scheme,
<<"bearer"/utf8>>,
{some, <<"JWT"/utf8>>},
none,
maps:new()}.
-file("src/nori/security.gleam", 207).
?DOC(" Creates a Basic auth security scheme.\n").
-spec basic_auth() -> security_scheme().
basic_auth() ->
{http_security_scheme, <<"basic"/utf8>>, none, none, maps:new()}.