Current section
Files
Jump to
Current section
Files
src/nori@parameter.erl
-module(nori@parameter).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/nori/parameter.gleam").
-export([location_to_string/1, parse_location/1, style_to_string/1, parse_style/1, new/2, path_param/1, query_param/1, header_param/1, cookie_param/1]).
-export_type([parameter/0, parameter_location/0, parameter_style/0, example/0, media_type/0, encoding/0, header/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(
" Parameter types for OpenAPI specifications.\n"
"\n"
" Parameters can be in path, query, header, or cookie.\n"
).
-type parameter() :: {parameter,
binary(),
parameter_location(),
gleam@option:option(binary()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(parameter_style()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(nori@reference:ref(nori@schema:schema())),
gleam@option:option(gleam@json:json()),
gleam@option:option(gleam@dict:dict(binary(), nori@reference:ref(example()))),
gleam@option:option(gleam@dict:dict(binary(), media_type())),
gleam@dict:dict(binary(), gleam@json:json())}.
-type parameter_location() :: in_path | in_query | in_header | in_cookie.
-type parameter_style() :: style_simple |
style_label |
style_matrix |
style_form |
style_space_delimited |
style_pipe_delimited |
style_deep_object.
-type example() :: {example,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(gleam@json:json()),
gleam@option:option(binary()),
gleam@dict:dict(binary(), gleam@json:json())}.
-type media_type() :: {media_type,
gleam@option:option(nori@reference:ref(nori@schema:schema())),
gleam@option:option(gleam@json:json()),
gleam@option:option(gleam@dict:dict(binary(), nori@reference:ref(example()))),
gleam@option:option(gleam@dict:dict(binary(), encoding())),
gleam@dict:dict(binary(), gleam@json:json())}.
-type encoding() :: {encoding,
gleam@option:option(binary()),
gleam@option:option(gleam@dict:dict(binary(), nori@reference:ref(header()))),
gleam@option:option(parameter_style()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@dict:dict(binary(), gleam@json:json())}.
-type header() :: {header,
gleam@option:option(binary()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(parameter_style()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(nori@reference:ref(nori@schema:schema())),
gleam@option:option(gleam@json:json()),
gleam@option:option(gleam@dict:dict(binary(), nori@reference:ref(example()))),
gleam@option:option(gleam@dict:dict(binary(), media_type())),
gleam@dict:dict(binary(), gleam@json:json())}.
-file("src/nori/parameter.gleam", 159).
?DOC(" Converts a `ParameterLocation` to its string representation.\n").
-spec location_to_string(parameter_location()) -> binary().
location_to_string(Location) ->
case Location of
in_path ->
<<"path"/utf8>>;
in_query ->
<<"query"/utf8>>;
in_header ->
<<"header"/utf8>>;
in_cookie ->
<<"cookie"/utf8>>
end.
-file("src/nori/parameter.gleam", 169).
?DOC(" Parses a location string into a `ParameterLocation`.\n").
-spec parse_location(binary()) -> {ok, parameter_location()} | {error, nil}.
parse_location(S) ->
case S of
<<"path"/utf8>> ->
{ok, in_path};
<<"query"/utf8>> ->
{ok, in_query};
<<"header"/utf8>> ->
{ok, in_header};
<<"cookie"/utf8>> ->
{ok, in_cookie};
_ ->
{error, nil}
end.
-file("src/nori/parameter.gleam", 180).
?DOC(" Converts a `ParameterStyle` to its string representation.\n").
-spec style_to_string(parameter_style()) -> binary().
style_to_string(Style) ->
case Style of
style_simple ->
<<"simple"/utf8>>;
style_label ->
<<"label"/utf8>>;
style_matrix ->
<<"matrix"/utf8>>;
style_form ->
<<"form"/utf8>>;
style_space_delimited ->
<<"spaceDelimited"/utf8>>;
style_pipe_delimited ->
<<"pipeDelimited"/utf8>>;
style_deep_object ->
<<"deepObject"/utf8>>
end.
-file("src/nori/parameter.gleam", 193).
?DOC(" Parses a style string into a `ParameterStyle`.\n").
-spec parse_style(binary()) -> {ok, parameter_style()} | {error, nil}.
parse_style(S) ->
case S of
<<"simple"/utf8>> ->
{ok, style_simple};
<<"label"/utf8>> ->
{ok, style_label};
<<"matrix"/utf8>> ->
{ok, style_matrix};
<<"form"/utf8>> ->
{ok, style_form};
<<"spaceDelimited"/utf8>> ->
{ok, style_space_delimited};
<<"pipeDelimited"/utf8>> ->
{ok, style_pipe_delimited};
<<"deepObject"/utf8>> ->
{ok, style_deep_object};
_ ->
{error, nil}
end.
-file("src/nori/parameter.gleam", 207).
?DOC(" Creates an empty `Parameter` with the required fields.\n").
-spec new(binary(), parameter_location()) -> parameter().
new(Name, In_) ->
{parameter,
Name,
In_,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
maps:new()}.
-file("src/nori/parameter.gleam", 227).
?DOC(" Creates a path parameter (required by default).\n").
-spec path_param(binary()) -> parameter().
path_param(Name) ->
{parameter,
Name,
in_path,
none,
{some, true},
none,
none,
none,
none,
none,
none,
none,
none,
none,
maps:new()}.
-file("src/nori/parameter.gleam", 247).
?DOC(" Creates a query parameter.\n").
-spec query_param(binary()) -> parameter().
query_param(Name) ->
new(Name, in_query).
-file("src/nori/parameter.gleam", 252).
?DOC(" Creates a header parameter.\n").
-spec header_param(binary()) -> parameter().
header_param(Name) ->
new(Name, in_header).
-file("src/nori/parameter.gleam", 257).
?DOC(" Creates a cookie parameter.\n").
-spec cookie_param(binary()) -> parameter().
cookie_param(Name) ->
new(Name, in_cookie).