Packages

OpenAPI code generation for Gleam — parse specs, generate types, routes, clients, and React Query/SWR hooks

Current section

Files

Jump to
nori src nori@encoder.erl
Raw

src/nori@encoder.erl

-module(nori@encoder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/nori/encoder.gleam").
-export([encode_document/1]).
-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(" Encoder for serializing OpenAPI documents to JSON.\n").
-file("src/nori/encoder.gleam", 603).
?DOC(" Encodes a JsonType to string.\n").
-spec encode_json_type(nori@schema:json_type()) -> binary().
encode_json_type(T) ->
case T of
type_null ->
<<"null"/utf8>>;
type_boolean ->
<<"boolean"/utf8>>;
type_integer ->
<<"integer"/utf8>>;
type_number ->
<<"number"/utf8>>;
type_string ->
<<"string"/utf8>>;
json_type_array ->
<<"array"/utf8>>;
type_object ->
<<"object"/utf8>>
end.
-file("src/nori/encoder.gleam", 594).
?DOC(" Encodes a SchemaType.\n").
-spec encode_schema_type(nori@schema:schema_type()) -> gleam@json:json().
encode_schema_type(T) ->
case T of
{single_type, Jt} ->
gleam@json:string(encode_json_type(Jt));
{multiple_types, Types} ->
gleam@json:array(
Types,
fun(Jt@1) -> gleam@json:string(encode_json_type(Jt@1)) end
)
end.
-file("src/nori/encoder.gleam", 1154).
?DOC(" Encodes a Ref type.\n").
-spec encode_ref(nori@reference:ref(QEE), fun((QEE) -> gleam@json:json())) -> gleam@json:json().
encode_ref(Ref, Encoder) ->
case Ref of
{reference, R} ->
gleam@json:object([{<<"$ref"/utf8>>, gleam@json:string(R)}]);
{inline, Value} ->
Encoder(Value)
end.
-file("src/nori/encoder.gleam", 1162).
?DOC(" Encodes a dictionary to JSON object.\n").
-spec encode_dict(
gleam@dict:dict(binary(), QEG),
fun((QEG) -> gleam@json:json())
) -> gleam@json:json().
encode_dict(D, Encoder) ->
_pipe = maps:to_list(D),
_pipe@1 = gleam@list:map(
_pipe,
fun(Pair) ->
{erlang:element(1, Pair), Encoder(erlang:element(2, Pair))}
end
),
gleam@json:object(_pipe@1).
-file("src/nori/encoder.gleam", 1132).
?DOC(" Encodes a security requirement.\n").
-spec encode_security_requirement(gleam@dict:dict(binary(), list(binary()))) -> gleam@json:json().
encode_security_requirement(Req) ->
encode_dict(
Req,
fun(_capture) -> gleam@json:array(_capture, fun gleam@json:string/1) end
).
-file("src/nori/encoder.gleam", 1169).
?DOC(" Adds an optional string field.\n").
-spec add_optional_string(
list({binary(), gleam@json:json()}),
binary(),
gleam@option:option(binary())
) -> list({binary(), gleam@json:json()}).
add_optional_string(Fields, Key, Value) ->
case Value of
none ->
Fields;
{some, V} ->
lists:append(Fields, [{Key, gleam@json:string(V)}])
end.
-file("src/nori/encoder.gleam", 1181).
?DOC(" Adds an optional bool field.\n").
-spec add_optional_bool(
list({binary(), gleam@json:json()}),
binary(),
gleam@option:option(boolean())
) -> list({binary(), gleam@json:json()}).
add_optional_bool(Fields, Key, Value) ->
case Value of
none ->
Fields;
{some, V} ->
lists:append(Fields, [{Key, gleam@json:bool(V)}])
end.
-file("src/nori/encoder.gleam", 1193).
?DOC(" Adds an optional int field.\n").
-spec add_optional_int(
list({binary(), gleam@json:json()}),
binary(),
gleam@option:option(integer())
) -> list({binary(), gleam@json:json()}).
add_optional_int(Fields, Key, Value) ->
case Value of
none ->
Fields;
{some, V} ->
lists:append(Fields, [{Key, gleam@json:int(V)}])
end.
-file("src/nori/encoder.gleam", 1205).
?DOC(" Adds an optional float field.\n").
-spec add_optional_float(
list({binary(), gleam@json:json()}),
binary(),
gleam@option:option(float())
) -> list({binary(), gleam@json:json()}).
add_optional_float(Fields, Key, Value) ->
case Value of
none ->
Fields;
{some, V} ->
lists:append(Fields, [{Key, gleam@json:float(V)}])
end.
-file("src/nori/encoder.gleam", 1217).
?DOC(" Adds extension fields.\n").
-spec add_extensions(
list({binary(), gleam@json:json()}),
gleam@dict:dict(binary(), gleam@json:json())
) -> list({binary(), gleam@json:json()}).
add_extensions(Fields, Extensions) ->
Ext_list = maps:to_list(Extensions),
lists:append(Fields, Ext_list).
-file("src/nori/encoder.gleam", 126).
?DOC(" Encodes a Contact object.\n").
-spec encode_contact(nori@info:contact()) -> gleam@json:json().
encode_contact(Contact) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"name"/utf8>>,
erlang:element(2, Contact)
),
Fields@2 = add_optional_string(
Fields@1,
<<"url"/utf8>>,
erlang:element(3, Contact)
),
Fields@3 = add_optional_string(
Fields@2,
<<"email"/utf8>>,
erlang:element(4, Contact)
),
Fields@4 = add_extensions(Fields@3, erlang:element(5, Contact)),
gleam@json:object(Fields@4).
-file("src/nori/encoder.gleam", 136).
?DOC(" Encodes a License object.\n").
-spec encode_license(nori@info:license()) -> gleam@json:json().
encode_license(License) ->
Fields = [{<<"name"/utf8>>, gleam@json:string(erlang:element(2, License))}],
Fields@1 = add_optional_string(
Fields,
<<"identifier"/utf8>>,
erlang:element(3, License)
),
Fields@2 = add_optional_string(
Fields@1,
<<"url"/utf8>>,
erlang:element(4, License)
),
Fields@3 = add_extensions(Fields@2, erlang:element(5, License)),
gleam@json:object(Fields@3).
-file("src/nori/encoder.gleam", 97).
?DOC(" Encodes an Info object.\n").
-spec encode_info(nori@info:info()) -> gleam@json:json().
encode_info(Info) ->
Fields = [{<<"title"/utf8>>, gleam@json:string(erlang:element(2, Info))},
{<<"version"/utf8>>, gleam@json:string(erlang:element(7, Info))}],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
erlang:element(3, Info)
),
Fields@2 = add_optional_string(
Fields@1,
<<"termsOfService"/utf8>>,
erlang:element(4, Info)
),
Fields@3 = add_optional_string(
Fields@2,
<<"summary"/utf8>>,
erlang:element(8, Info)
),
Fields@4 = case erlang:element(5, Info) of
none ->
Fields@3;
{some, Contact} ->
lists:append(
Fields@3,
[{<<"contact"/utf8>>, encode_contact(Contact)}]
)
end,
Fields@5 = case erlang:element(6, Info) of
none ->
Fields@4;
{some, License} ->
lists:append(
Fields@4,
[{<<"license"/utf8>>, encode_license(License)}]
)
end,
Fields@6 = add_extensions(Fields@5, erlang:element(9, Info)),
gleam@json:object(Fields@6).
-file("src/nori/encoder.gleam", 163).
?DOC(" Encodes a ServerVariable object.\n").
-spec encode_server_variable(nori@server:server_variable()) -> gleam@json:json().
encode_server_variable(Variable) ->
Fields = [{<<"default"/utf8>>,
gleam@json:string(erlang:element(3, Variable))}],
Fields@1 = case erlang:element(2, Variable) of
[] ->
Fields;
Values ->
lists:append(
Fields,
[{<<"enum"/utf8>>,
gleam@json:array(Values, fun gleam@json:string/1)}]
)
end,
Fields@2 = add_optional_string(
Fields@1,
<<"description"/utf8>>,
erlang:element(4, Variable)
),
Fields@3 = add_extensions(Fields@2, erlang:element(5, Variable)),
gleam@json:object(Fields@3).
-file("src/nori/encoder.gleam", 145).
?DOC(" Encodes a Server object.\n").
-spec encode_server(nori@server:server()) -> gleam@json:json().
encode_server(Server) ->
Fields = [{<<"url"/utf8>>, gleam@json:string(erlang:element(2, Server))}],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
erlang:element(3, Server)
),
Fields@2 = case gleam@dict:is_empty(erlang:element(4, Server)) of
true ->
Fields@1;
false ->
lists:append(
Fields@1,
[{<<"variables"/utf8>>,
encode_dict(
erlang:element(4, Server),
fun encode_server_variable/1
)}]
)
end,
Fields@3 = add_extensions(Fields@2, erlang:element(5, Server)),
gleam@json:object(Fields@3).
-file("src/nori/encoder.gleam", 624).
?DOC(" Encodes a Discriminator.\n").
-spec encode_discriminator(nori@schema:discriminator()) -> gleam@json:json().
encode_discriminator(D) ->
Fields = [{<<"propertyName"/utf8>>, gleam@json:string(erlang:element(2, D))}],
Fields@1 = case erlang:element(3, D) of
none ->
Fields;
{some, Mapping} ->
lists:append(
Fields,
[{<<"mapping"/utf8>>,
encode_dict(Mapping, fun gleam@json:string/1)}]
)
end,
Fields@2 = add_extensions(Fields@1, erlang:element(4, D)),
gleam@json:object(Fields@2).
-file("src/nori/encoder.gleam", 639).
?DOC(" Encodes an XML object.\n").
-spec encode_xml(nori@schema:xml()) -> gleam@json:json().
encode_xml(X) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"name"/utf8>>,
erlang:element(2, X)
),
Fields@2 = add_optional_string(
Fields@1,
<<"namespace"/utf8>>,
erlang:element(3, X)
),
Fields@3 = add_optional_string(
Fields@2,
<<"prefix"/utf8>>,
erlang:element(4, X)
),
Fields@4 = add_optional_bool(
Fields@3,
<<"attribute"/utf8>>,
erlang:element(5, X)
),
Fields@5 = add_optional_bool(
Fields@4,
<<"wrapped"/utf8>>,
erlang:element(6, X)
),
Fields@6 = add_extensions(Fields@5, erlang:element(7, X)),
gleam@json:object(Fields@6).
-file("src/nori/encoder.gleam", 651).
?DOC(" Encodes an ExternalDocumentation object.\n").
-spec encode_external_docs(nori@schema:external_documentation()) -> gleam@json:json().
encode_external_docs(Docs) ->
Fields = [{<<"url"/utf8>>, gleam@json:string(erlang:element(2, Docs))}],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
erlang:element(3, Docs)
),
Fields@2 = add_extensions(Fields@1, erlang:element(4, Docs)),
gleam@json:object(Fields@2).
-file("src/nori/encoder.gleam", 712).
?DOC(" Encodes an Example object.\n").
-spec encode_example(nori@parameter:example()) -> gleam@json:json().
encode_example(Ex) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"summary"/utf8>>,
erlang:element(2, Ex)
),
Fields@2 = add_optional_string(
Fields@1,
<<"description"/utf8>>,
erlang:element(3, Ex)
),
Fields@3 = case erlang:element(4, Ex) of
none ->
Fields@2;
{some, V} ->
lists:append(Fields@2, [{<<"value"/utf8>>, V}])
end,
Fields@4 = add_optional_string(
Fields@3,
<<"externalValue"/utf8>>,
erlang:element(5, Ex)
),
Fields@5 = add_extensions(Fields@4, erlang:element(6, Ex)),
gleam@json:object(Fields@5).
-file("src/nori/encoder.gleam", 838).
?DOC(" Encodes a Link object.\n").
-spec encode_link(nori@response:link()) -> gleam@json:json().
encode_link(Link) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"operationRef"/utf8>>,
erlang:element(2, Link)
),
Fields@2 = add_optional_string(
Fields@1,
<<"operationId"/utf8>>,
erlang:element(3, Link)
),
Fields@3 = case gleam@dict:is_empty(erlang:element(4, Link)) of
true ->
Fields@2;
false ->
lists:append(
Fields@2,
[{<<"parameters"/utf8>>,
encode_dict(erlang:element(4, Link), fun(V) -> V end)}]
)
end,
Fields@4 = case erlang:element(5, Link) of
none ->
Fields@3;
{some, Rb} ->
lists:append(Fields@3, [{<<"requestBody"/utf8>>, Rb}])
end,
Fields@5 = add_optional_string(
Fields@4,
<<"description"/utf8>>,
erlang:element(6, Link)
),
Fields@6 = case erlang:element(7, Link) of
none ->
Fields@5;
{some, Server} ->
lists:append(Fields@5, [{<<"server"/utf8>>, encode_server(Server)}])
end,
Fields@7 = add_extensions(Fields@6, erlang:element(8, Link)),
gleam@json:object(Fields@7).
-file("src/nori/encoder.gleam", 1087).
?DOC(" Encodes implicit OAuth flow.\n").
-spec encode_implicit_flow(nori@security:implicit_o_auth_flow()) -> gleam@json:json().
encode_implicit_flow(Flow) ->
Fields = [{<<"authorizationUrl"/utf8>>,
gleam@json:string(erlang:element(2, Flow))},
{<<"scopes"/utf8>>,
encode_dict(erlang:element(4, Flow), fun gleam@json:string/1)}],
Fields@1 = add_optional_string(
Fields,
<<"refreshUrl"/utf8>>,
erlang:element(3, Flow)
),
Fields@2 = add_extensions(Fields@1, erlang:element(5, Flow)),
gleam@json:object(Fields@2).
-file("src/nori/encoder.gleam", 1098).
?DOC(" Encodes password OAuth flow.\n").
-spec encode_password_flow(nori@security:password_o_auth_flow()) -> gleam@json:json().
encode_password_flow(Flow) ->
Fields = [{<<"tokenUrl"/utf8>>, gleam@json:string(erlang:element(2, Flow))},
{<<"scopes"/utf8>>,
encode_dict(erlang:element(4, Flow), fun gleam@json:string/1)}],
Fields@1 = add_optional_string(
Fields,
<<"refreshUrl"/utf8>>,
erlang:element(3, Flow)
),
Fields@2 = add_extensions(Fields@1, erlang:element(5, Flow)),
gleam@json:object(Fields@2).
-file("src/nori/encoder.gleam", 1109).
?DOC(" Encodes client credentials OAuth flow.\n").
-spec encode_client_credentials_flow(
nori@security:client_credentials_o_auth_flow()
) -> gleam@json:json().
encode_client_credentials_flow(Flow) ->
Fields = [{<<"tokenUrl"/utf8>>, gleam@json:string(erlang:element(2, Flow))},
{<<"scopes"/utf8>>,
encode_dict(erlang:element(4, Flow), fun gleam@json:string/1)}],
Fields@1 = add_optional_string(
Fields,
<<"refreshUrl"/utf8>>,
erlang:element(3, Flow)
),
Fields@2 = add_extensions(Fields@1, erlang:element(5, Flow)),
gleam@json:object(Fields@2).
-file("src/nori/encoder.gleam", 1120).
?DOC(" Encodes authorization code OAuth flow.\n").
-spec encode_authorization_code_flow(
nori@security:authorization_code_o_auth_flow()
) -> gleam@json:json().
encode_authorization_code_flow(Flow) ->
Fields = [{<<"authorizationUrl"/utf8>>,
gleam@json:string(erlang:element(2, Flow))},
{<<"tokenUrl"/utf8>>, gleam@json:string(erlang:element(3, Flow))},
{<<"scopes"/utf8>>,
encode_dict(erlang:element(5, Flow), fun gleam@json:string/1)}],
Fields@1 = add_optional_string(
Fields,
<<"refreshUrl"/utf8>>,
erlang:element(4, Flow)
),
Fields@2 = add_extensions(Fields@1, erlang:element(6, Flow)),
gleam@json:object(Fields@2).
-file("src/nori/encoder.gleam", 1051).
?DOC(" Encodes OAuth flows.\n").
-spec encode_oauth_flows(nori@security:o_auth_flows()) -> gleam@json:json().
encode_oauth_flows(Flows) ->
Fields = [],
Fields@1 = case erlang:element(2, Flows) of
none ->
Fields;
{some, Flow} ->
lists:append(
Fields,
[{<<"implicit"/utf8>>, encode_implicit_flow(Flow)}]
)
end,
Fields@2 = case erlang:element(3, Flows) of
none ->
Fields@1;
{some, Flow@1} ->
lists:append(
Fields@1,
[{<<"password"/utf8>>, encode_password_flow(Flow@1)}]
)
end,
Fields@3 = case erlang:element(4, Flows) of
none ->
Fields@2;
{some, Flow@2} ->
lists:append(
Fields@2,
[{<<"clientCredentials"/utf8>>,
encode_client_credentials_flow(Flow@2)}]
)
end,
Fields@4 = case erlang:element(5, Flows) of
none ->
Fields@3;
{some, Flow@3} ->
lists:append(
Fields@3,
[{<<"authorizationCode"/utf8>>,
encode_authorization_code_flow(Flow@3)}]
)
end,
Fields@5 = add_extensions(Fields@4, erlang:element(6, Flows)),
gleam@json:object(Fields@5).
-file("src/nori/encoder.gleam", 992).
?DOC(" Encodes a SecurityScheme object.\n").
-spec encode_security_scheme(nori@security:security_scheme()) -> gleam@json:json().
encode_security_scheme(Scheme) ->
case Scheme of
{api_key_security_scheme, Name, In_, Description, Extensions} ->
Fields = [{<<"type"/utf8>>, gleam@json:string(<<"apiKey"/utf8>>)},
{<<"name"/utf8>>, gleam@json:string(Name)},
{<<"in"/utf8>>,
gleam@json:string(
nori@security:api_key_location_to_string(In_)
)}],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
Description
),
Fields@2 = add_extensions(Fields@1, Extensions),
gleam@json:object(Fields@2);
{http_security_scheme,
Scheme_name,
Bearer_format,
Description@1,
Extensions@1} ->
Fields@3 = [{<<"type"/utf8>>, gleam@json:string(<<"http"/utf8>>)},
{<<"scheme"/utf8>>, gleam@json:string(Scheme_name)}],
Fields@4 = add_optional_string(
Fields@3,
<<"bearerFormat"/utf8>>,
Bearer_format
),
Fields@5 = add_optional_string(
Fields@4,
<<"description"/utf8>>,
Description@1
),
Fields@6 = add_extensions(Fields@5, Extensions@1),
gleam@json:object(Fields@6);
{mutual_tls_security_scheme, Description@2, Extensions@2} ->
Fields@7 = [{<<"type"/utf8>>,
gleam@json:string(<<"mutualTLS"/utf8>>)}],
Fields@8 = add_optional_string(
Fields@7,
<<"description"/utf8>>,
Description@2
),
Fields@9 = add_extensions(Fields@8, Extensions@2),
gleam@json:object(Fields@9);
{o_auth2_security_scheme, Flows, Description@3, Extensions@3} ->
Fields@10 = [{<<"type"/utf8>>, gleam@json:string(<<"oauth2"/utf8>>)},
{<<"flows"/utf8>>, encode_oauth_flows(Flows)}],
Fields@11 = add_optional_string(
Fields@10,
<<"description"/utf8>>,
Description@3
),
Fields@12 = add_extensions(Fields@11, Extensions@3),
gleam@json:object(Fields@12);
{open_id_connect_security_scheme,
Open_id_connect_url,
Description@4,
Extensions@4} ->
Fields@13 = [{<<"type"/utf8>>,
gleam@json:string(<<"openIdConnect"/utf8>>)},
{<<"openIdConnectUrl"/utf8>>,
gleam@json:string(Open_id_connect_url)}],
Fields@14 = add_optional_string(
Fields@13,
<<"description"/utf8>>,
Description@4
),
Fields@15 = add_extensions(Fields@14, Extensions@4),
gleam@json:object(Fields@15)
end.
-file("src/nori/encoder.gleam", 1137).
?DOC(" Encodes a Tag object.\n").
-spec encode_tag(nori@operation:tag()) -> gleam@json:json().
encode_tag(Tag) ->
Fields = [{<<"name"/utf8>>, gleam@json:string(erlang:element(2, Tag))}],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
erlang:element(3, Tag)
),
Fields@2 = case erlang:element(4, Tag) of
none ->
Fields@1;
{some, Docs} ->
lists:append(
Fields@1,
[{<<"externalDocs"/utf8>>, encode_external_docs(Docs)}]
)
end,
Fields@3 = add_extensions(Fields@2, erlang:element(5, Tag)),
gleam@json:object(Fields@3).
-file("src/nori/encoder.gleam", 869).
?DOC(" Encodes a Callback object.\n").
-spec encode_callback(
gleam@dict:dict(binary(), nori@reference:ref(nori@operation:path_item()))
) -> gleam@json:json().
encode_callback(Callback) ->
encode_dict(
Callback,
fun(_capture) -> encode_ref(_capture, fun encode_path_item/1) end
).
-file("src/nori/encoder.gleam", 178).
?DOC(" Encodes a PathItem object.\n").
-spec encode_path_item(nori@operation:path_item()) -> gleam@json:json().
encode_path_item(Item) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"$ref"/utf8>>,
erlang:element(2, Item)
),
Fields@2 = add_optional_string(
Fields@1,
<<"summary"/utf8>>,
erlang:element(3, Item)
),
Fields@3 = add_optional_string(
Fields@2,
<<"description"/utf8>>,
erlang:element(4, Item)
),
Fields@4 = case erlang:element(5, Item) of
none ->
Fields@3;
{some, Op} ->
lists:append(Fields@3, [{<<"get"/utf8>>, encode_operation(Op)}])
end,
Fields@5 = case erlang:element(6, Item) of
none ->
Fields@4;
{some, Op@1} ->
lists:append(Fields@4, [{<<"put"/utf8>>, encode_operation(Op@1)}])
end,
Fields@6 = case erlang:element(7, Item) of
none ->
Fields@5;
{some, Op@2} ->
lists:append(Fields@5, [{<<"post"/utf8>>, encode_operation(Op@2)}])
end,
Fields@7 = case erlang:element(8, Item) of
none ->
Fields@6;
{some, Op@3} ->
lists:append(
Fields@6,
[{<<"delete"/utf8>>, encode_operation(Op@3)}]
)
end,
Fields@8 = case erlang:element(9, Item) of
none ->
Fields@7;
{some, Op@4} ->
lists:append(
Fields@7,
[{<<"options"/utf8>>, encode_operation(Op@4)}]
)
end,
Fields@9 = case erlang:element(10, Item) of
none ->
Fields@8;
{some, Op@5} ->
lists:append(Fields@8, [{<<"head"/utf8>>, encode_operation(Op@5)}])
end,
Fields@10 = case erlang:element(11, Item) of
none ->
Fields@9;
{some, Op@6} ->
lists:append(Fields@9, [{<<"patch"/utf8>>, encode_operation(Op@6)}])
end,
Fields@11 = case erlang:element(12, Item) of
none ->
Fields@10;
{some, Op@7} ->
lists:append(
Fields@10,
[{<<"trace"/utf8>>, encode_operation(Op@7)}]
)
end,
Fields@12 = case erlang:element(13, Item) of
[] ->
Fields@11;
Servers ->
lists:append(
Fields@11,
[{<<"servers"/utf8>>,
gleam@json:array(Servers, fun encode_server/1)}]
)
end,
Fields@13 = case erlang:element(14, Item) of
[] ->
Fields@12;
Params ->
lists:append(
Fields@12,
[{<<"parameters"/utf8>>,
gleam@json:array(
Params,
fun(_capture) ->
encode_ref(_capture, fun encode_parameter/1)
end
)}]
)
end,
Fields@14 = add_extensions(Fields@13, erlang:element(15, Item)),
gleam@json:object(Fields@14).
-file("src/nori/encoder.gleam", 244).
?DOC(" Encodes an Operation object.\n").
-spec encode_operation(nori@operation:operation()) -> gleam@json:json().
encode_operation(Op) ->
Fields = [],
Fields@1 = case erlang:element(2, Op) of
[] ->
Fields;
Tags ->
lists:append(
Fields,
[{<<"tags"/utf8>>,
gleam@json:array(Tags, fun gleam@json:string/1)}]
)
end,
Fields@2 = add_optional_string(
Fields@1,
<<"summary"/utf8>>,
erlang:element(3, Op)
),
Fields@3 = add_optional_string(
Fields@2,
<<"description"/utf8>>,
erlang:element(4, Op)
),
Fields@4 = case erlang:element(5, Op) of
none ->
Fields@3;
{some, Docs} ->
lists:append(
Fields@3,
[{<<"externalDocs"/utf8>>, encode_external_docs(Docs)}]
)
end,
Fields@5 = add_optional_string(
Fields@4,
<<"operationId"/utf8>>,
erlang:element(6, Op)
),
Fields@6 = case erlang:element(7, Op) of
[] ->
Fields@5;
Params ->
lists:append(
Fields@5,
[{<<"parameters"/utf8>>,
gleam@json:array(
Params,
fun(_capture) ->
encode_ref(_capture, fun encode_parameter/1)
end
)}]
)
end,
Fields@7 = case erlang:element(8, Op) of
none ->
Fields@6;
{some, Body} ->
lists:append(
Fields@6,
[{<<"requestBody"/utf8>>,
encode_ref(Body, fun encode_request_body/1)}]
)
end,
Fields@8 = case gleam@dict:is_empty(erlang:element(9, Op)) of
true ->
Fields@7;
false ->
lists:append(
Fields@7,
[{<<"responses"/utf8>>,
encode_dict(
erlang:element(9, Op),
fun(_capture@1) ->
encode_ref(_capture@1, fun encode_response/1)
end
)}]
)
end,
Fields@9 = case gleam@dict:is_empty(erlang:element(10, Op)) of
true ->
Fields@8;
false ->
lists:append(
Fields@8,
[{<<"callbacks"/utf8>>,
encode_dict(
erlang:element(10, Op),
fun(_capture@2) ->
encode_ref(_capture@2, fun encode_callback/1)
end
)}]
)
end,
Fields@10 = case erlang:element(11, Op) of
none ->
Fields@9;
{some, Deprecated} ->
lists:append(
Fields@9,
[{<<"deprecated"/utf8>>, gleam@json:bool(Deprecated)}]
)
end,
Fields@11 = case erlang:element(12, Op) of
none ->
Fields@10;
{some, Security} ->
lists:append(
Fields@10,
[{<<"security"/utf8>>,
gleam@json:array(
Security,
fun encode_security_requirement/1
)}]
)
end,
Fields@12 = case erlang:element(13, Op) of
[] ->
Fields@11;
Servers ->
lists:append(
Fields@11,
[{<<"servers"/utf8>>,
gleam@json:array(Servers, fun encode_server/1)}]
)
end,
Fields@13 = add_extensions(Fields@12, erlang:element(14, Op)),
gleam@json:object(Fields@13).
-file("src/nori/encoder.gleam", 728).
?DOC(" Encodes an Encoding object.\n").
-spec encode_encoding(nori@parameter:encoding()) -> gleam@json:json().
encode_encoding(Enc) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"contentType"/utf8>>,
erlang:element(2, Enc)
),
Fields@2 = case erlang:element(3, Enc) of
none ->
Fields@1;
{some, Headers} ->
lists:append(
Fields@1,
[{<<"headers"/utf8>>,
encode_dict(
Headers,
fun(_capture) ->
encode_ref(_capture, fun encode_header/1)
end
)}]
)
end,
Fields@3 = case erlang:element(4, Enc) of
none ->
Fields@2;
{some, Style} ->
lists:append(
Fields@2,
[{<<"style"/utf8>>,
gleam@json:string(nori@parameter:style_to_string(Style))}]
)
end,
Fields@4 = add_optional_bool(
Fields@3,
<<"explode"/utf8>>,
erlang:element(5, Enc)
),
Fields@5 = add_optional_bool(
Fields@4,
<<"allowReserved"/utf8>>,
erlang:element(6, Enc)
),
Fields@6 = add_extensions(Fields@5, erlang:element(7, Enc)),
gleam@json:object(Fields@6).
-file("src/nori/encoder.gleam", 755).
?DOC(" Encodes a Header object.\n").
-spec encode_header(nori@parameter:header()) -> gleam@json:json().
encode_header(Header) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
erlang:element(2, Header)
),
Fields@2 = add_optional_bool(
Fields@1,
<<"required"/utf8>>,
erlang:element(3, Header)
),
Fields@3 = add_optional_bool(
Fields@2,
<<"deprecated"/utf8>>,
erlang:element(4, Header)
),
Fields@4 = add_optional_bool(
Fields@3,
<<"allowEmptyValue"/utf8>>,
erlang:element(5, Header)
),
Fields@5 = case erlang:element(6, Header) of
none ->
Fields@4;
{some, Style} ->
lists:append(
Fields@4,
[{<<"style"/utf8>>,
gleam@json:string(nori@parameter:style_to_string(Style))}]
)
end,
Fields@6 = add_optional_bool(
Fields@5,
<<"explode"/utf8>>,
erlang:element(7, Header)
),
Fields@7 = add_optional_bool(
Fields@6,
<<"allowReserved"/utf8>>,
erlang:element(8, Header)
),
Fields@8 = case erlang:element(9, Header) of
none ->
Fields@7;
{some, S} ->
lists:append(
Fields@7,
[{<<"schema"/utf8>>, encode_ref(S, fun encode_schema/1)}]
)
end,
Fields@9 = case erlang:element(10, Header) of
none ->
Fields@8;
{some, E} ->
lists:append(Fields@8, [{<<"example"/utf8>>, E}])
end,
Fields@10 = case erlang:element(11, Header) of
none ->
Fields@9;
{some, Examples} ->
lists:append(
Fields@9,
[{<<"examples"/utf8>>,
encode_dict(
Examples,
fun(_capture) ->
encode_ref(_capture, fun encode_example/1)
end
)}]
)
end,
Fields@11 = case erlang:element(12, Header) of
none ->
Fields@10;
{some, Content} ->
lists:append(
Fields@10,
[{<<"content"/utf8>>,
encode_dict(Content, fun encode_media_type/1)}]
)
end,
Fields@12 = add_extensions(Fields@11, erlang:element(13, Header)),
gleam@json:object(Fields@12).
-file("src/nori/encoder.gleam", 677).
?DOC(" Encodes a MediaType object.\n").
-spec encode_media_type(nori@parameter:media_type()) -> gleam@json:json().
encode_media_type(Mt) ->
Fields = [],
Fields@1 = case erlang:element(2, Mt) of
none ->
Fields;
{some, S} ->
lists:append(
Fields,
[{<<"schema"/utf8>>, encode_ref(S, fun encode_schema/1)}]
)
end,
Fields@2 = case erlang:element(3, Mt) of
none ->
Fields@1;
{some, E} ->
lists:append(Fields@1, [{<<"example"/utf8>>, E}])
end,
Fields@3 = case erlang:element(4, Mt) of
none ->
Fields@2;
{some, Examples} ->
lists:append(
Fields@2,
[{<<"examples"/utf8>>,
encode_dict(
Examples,
fun(_capture) ->
encode_ref(_capture, fun encode_example/1)
end
)}]
)
end,
Fields@4 = case erlang:element(5, Mt) of
none ->
Fields@3;
{some, Encoding} ->
lists:append(
Fields@3,
[{<<"encoding"/utf8>>,
encode_dict(Encoding, fun encode_encoding/1)}]
)
end,
Fields@5 = add_extensions(Fields@4, erlang:element(6, Mt)),
gleam@json:object(Fields@5).
-file("src/nori/encoder.gleam", 659).
?DOC(" Encodes a RequestBody object.\n").
-spec encode_request_body(nori@request_body:request_body()) -> gleam@json:json().
encode_request_body(Body) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
erlang:element(2, Body)
),
Fields@2 = case gleam@dict:is_empty(erlang:element(3, Body)) of
true ->
Fields@1;
false ->
lists:append(
Fields@1,
[{<<"content"/utf8>>,
encode_dict(
erlang:element(3, Body),
fun encode_media_type/1
)}]
)
end,
Fields@3 = add_optional_bool(
Fields@2,
<<"required"/utf8>>,
erlang:element(4, Body)
),
Fields@4 = add_extensions(Fields@3, erlang:element(5, Body)),
gleam@json:object(Fields@4).
-file("src/nori/encoder.gleam", 806).
?DOC(" Encodes a Response object.\n").
-spec encode_response(nori@response:response()) -> gleam@json:json().
encode_response(Resp) ->
Fields = [{<<"description"/utf8>>,
gleam@json:string(erlang:element(2, Resp))}],
Fields@1 = case gleam@dict:is_empty(erlang:element(3, Resp)) of
true ->
Fields;
false ->
lists:append(
Fields,
[{<<"headers"/utf8>>,
encode_dict(
erlang:element(3, Resp),
fun(_capture) ->
encode_ref(_capture, fun encode_header/1)
end
)}]
)
end,
Fields@2 = case gleam@dict:is_empty(erlang:element(4, Resp)) of
true ->
Fields@1;
false ->
lists:append(
Fields@1,
[{<<"content"/utf8>>,
encode_dict(
erlang:element(4, Resp),
fun encode_media_type/1
)}]
)
end,
Fields@3 = case gleam@dict:is_empty(erlang:element(5, Resp)) of
true ->
Fields@2;
false ->
lists:append(
Fields@2,
[{<<"links"/utf8>>,
encode_dict(
erlang:element(5, Resp),
fun(_capture@1) ->
encode_ref(_capture@1, fun encode_link/1)
end
)}]
)
end,
Fields@4 = add_extensions(Fields@3, erlang:element(6, Resp)),
gleam@json:object(Fields@4).
-file("src/nori/encoder.gleam", 616).
?DOC(" Encodes AdditionalProperties.\n").
-spec encode_additional_properties(nori@schema:additional_properties()) -> gleam@json:json().
encode_additional_properties(Ap) ->
case Ap of
{additional_properties_bool, B} ->
gleam@json:bool(B);
{additional_properties_schema, S} ->
encode_ref(S, fun encode_schema/1)
end.
-file("src/nori/encoder.gleam", 383).
?DOC(" Encodes a Schema object.\n").
-spec encode_schema(nori@schema:schema()) -> gleam@json:json().
encode_schema(Schema) ->
Fields = [],
Fields@1 = add_optional_string(
Fields,
<<"$schema"/utf8>>,
erlang:element(2, Schema)
),
Fields@2 = add_optional_string(
Fields@1,
<<"$id"/utf8>>,
erlang:element(4, Schema)
),
Fields@3 = add_optional_string(
Fields@2,
<<"$anchor"/utf8>>,
erlang:element(5, Schema)
),
Fields@4 = add_optional_string(
Fields@3,
<<"$dynamicAnchor"/utf8>>,
erlang:element(6, Schema)
),
Fields@5 = add_optional_string(
Fields@4,
<<"$ref"/utf8>>,
erlang:element(7, Schema)
),
Fields@6 = add_optional_string(
Fields@5,
<<"$dynamicRef"/utf8>>,
erlang:element(8, Schema)
),
Fields@7 = add_optional_string(
Fields@6,
<<"$comment"/utf8>>,
erlang:element(10, Schema)
),
Fields@8 = case erlang:element(11, Schema) of
[] ->
Fields@7;
Schemas ->
lists:append(
Fields@7,
[{<<"allOf"/utf8>>,
gleam@json:array(
Schemas,
fun(_capture) ->
encode_ref(_capture, fun encode_schema/1)
end
)}]
)
end,
Fields@9 = case erlang:element(12, Schema) of
[] ->
Fields@8;
Schemas@1 ->
lists:append(
Fields@8,
[{<<"anyOf"/utf8>>,
gleam@json:array(
Schemas@1,
fun(_capture@1) ->
encode_ref(_capture@1, fun encode_schema/1)
end
)}]
)
end,
Fields@10 = case erlang:element(13, Schema) of
[] ->
Fields@9;
Schemas@2 ->
lists:append(
Fields@9,
[{<<"oneOf"/utf8>>,
gleam@json:array(
Schemas@2,
fun(_capture@2) ->
encode_ref(_capture@2, fun encode_schema/1)
end
)}]
)
end,
Fields@11 = case erlang:element(14, Schema) of
none ->
Fields@10;
{some, S} ->
lists:append(
Fields@10,
[{<<"not"/utf8>>, encode_ref(S, fun encode_schema/1)}]
)
end,
Fields@12 = case erlang:element(15, Schema) of
none ->
Fields@11;
{some, S@1} ->
lists:append(
Fields@11,
[{<<"if"/utf8>>, encode_ref(S@1, fun encode_schema/1)}]
)
end,
Fields@13 = case erlang:element(16, Schema) of
none ->
Fields@12;
{some, S@2} ->
lists:append(
Fields@12,
[{<<"then"/utf8>>, encode_ref(S@2, fun encode_schema/1)}]
)
end,
Fields@14 = case erlang:element(17, Schema) of
none ->
Fields@13;
{some, S@3} ->
lists:append(
Fields@13,
[{<<"else"/utf8>>, encode_ref(S@3, fun encode_schema/1)}]
)
end,
Fields@15 = case erlang:element(19, Schema) of
[] ->
Fields@14;
Items ->
lists:append(
Fields@14,
[{<<"prefixItems"/utf8>>,
gleam@json:array(
Items,
fun(_capture@3) ->
encode_ref(_capture@3, fun encode_schema/1)
end
)}]
)
end,
Fields@16 = case erlang:element(20, Schema) of
none ->
Fields@15;
{some, S@4} ->
lists:append(
Fields@15,
[{<<"items"/utf8>>, encode_ref(S@4, fun encode_schema/1)}]
)
end,
Fields@17 = case erlang:element(21, Schema) of
none ->
Fields@16;
{some, S@5} ->
lists:append(
Fields@16,
[{<<"contains"/utf8>>, encode_ref(S@5, fun encode_schema/1)}]
)
end,
Fields@18 = case gleam@dict:is_empty(erlang:element(22, Schema)) of
true ->
Fields@17;
false ->
lists:append(
Fields@17,
[{<<"properties"/utf8>>,
encode_dict(
erlang:element(22, Schema),
fun(_capture@4) ->
encode_ref(_capture@4, fun encode_schema/1)
end
)}]
)
end,
Fields@19 = case erlang:element(23, Schema) of
none ->
Fields@18;
{some, Props} ->
lists:append(
Fields@18,
[{<<"patternProperties"/utf8>>,
encode_dict(
Props,
fun(_capture@5) ->
encode_ref(_capture@5, fun encode_schema/1)
end
)}]
)
end,
Fields@20 = case erlang:element(24, Schema) of
none ->
Fields@19;
{some, Ap} ->
lists:append(
Fields@19,
[{<<"additionalProperties"/utf8>>,
encode_additional_properties(Ap)}]
)
end,
Fields@21 = case erlang:element(25, Schema) of
none ->
Fields@20;
{some, S@6} ->
lists:append(
Fields@20,
[{<<"propertyNames"/utf8>>,
encode_ref(S@6, fun encode_schema/1)}]
)
end,
Fields@22 = case erlang:element(28, Schema) of
none ->
Fields@21;
{some, T} ->
lists:append(Fields@21, [{<<"type"/utf8>>, encode_schema_type(T)}])
end,
Fields@23 = case erlang:element(29, Schema) of
none ->
Fields@22;
{some, V} ->
lists:append(Fields@22, [{<<"const"/utf8>>, V}])
end,
Fields@24 = case erlang:element(30, Schema) of
none ->
Fields@23;
{some, Values} ->
lists:append(
Fields@23,
[{<<"enum"/utf8>>,
gleam@json:array(Values, fun(V@1) -> V@1 end)}]
)
end,
Fields@25 = add_optional_float(
Fields@24,
<<"multipleOf"/utf8>>,
erlang:element(31, Schema)
),
Fields@26 = add_optional_float(
Fields@25,
<<"maximum"/utf8>>,
erlang:element(32, Schema)
),
Fields@27 = add_optional_float(
Fields@26,
<<"exclusiveMaximum"/utf8>>,
erlang:element(33, Schema)
),
Fields@28 = add_optional_float(
Fields@27,
<<"minimum"/utf8>>,
erlang:element(34, Schema)
),
Fields@29 = add_optional_float(
Fields@28,
<<"exclusiveMinimum"/utf8>>,
erlang:element(35, Schema)
),
Fields@30 = add_optional_int(
Fields@29,
<<"maxLength"/utf8>>,
erlang:element(36, Schema)
),
Fields@31 = add_optional_int(
Fields@30,
<<"minLength"/utf8>>,
erlang:element(37, Schema)
),
Fields@32 = add_optional_string(
Fields@31,
<<"pattern"/utf8>>,
erlang:element(38, Schema)
),
Fields@33 = add_optional_int(
Fields@32,
<<"maxItems"/utf8>>,
erlang:element(39, Schema)
),
Fields@34 = add_optional_int(
Fields@33,
<<"minItems"/utf8>>,
erlang:element(40, Schema)
),
Fields@35 = add_optional_bool(
Fields@34,
<<"uniqueItems"/utf8>>,
erlang:element(41, Schema)
),
Fields@36 = add_optional_int(
Fields@35,
<<"maxContains"/utf8>>,
erlang:element(42, Schema)
),
Fields@37 = add_optional_int(
Fields@36,
<<"minContains"/utf8>>,
erlang:element(43, Schema)
),
Fields@38 = add_optional_int(
Fields@37,
<<"maxProperties"/utf8>>,
erlang:element(44, Schema)
),
Fields@39 = add_optional_int(
Fields@38,
<<"minProperties"/utf8>>,
erlang:element(45, Schema)
),
Fields@40 = case erlang:element(46, Schema) of
[] ->
Fields@39;
Required ->
lists:append(
Fields@39,
[{<<"required"/utf8>>,
gleam@json:array(Required, fun gleam@json:string/1)}]
)
end,
Fields@41 = add_optional_string(
Fields@40,
<<"format"/utf8>>,
erlang:element(48, Schema)
),
Fields@42 = add_optional_string(
Fields@41,
<<"contentEncoding"/utf8>>,
erlang:element(49, Schema)
),
Fields@43 = add_optional_string(
Fields@42,
<<"contentMediaType"/utf8>>,
erlang:element(50, Schema)
),
Fields@44 = case erlang:element(51, Schema) of
none ->
Fields@43;
{some, S@7} ->
lists:append(
Fields@43,
[{<<"contentSchema"/utf8>>,
encode_ref(S@7, fun encode_schema/1)}]
)
end,
Fields@45 = add_optional_string(
Fields@44,
<<"title"/utf8>>,
erlang:element(52, Schema)
),
Fields@46 = add_optional_string(
Fields@45,
<<"description"/utf8>>,
erlang:element(53, Schema)
),
Fields@47 = case erlang:element(54, Schema) of
none ->
Fields@46;
{some, V@2} ->
lists:append(Fields@46, [{<<"default"/utf8>>, V@2}])
end,
Fields@48 = add_optional_bool(
Fields@47,
<<"deprecated"/utf8>>,
erlang:element(55, Schema)
),
Fields@49 = add_optional_bool(
Fields@48,
<<"readOnly"/utf8>>,
erlang:element(56, Schema)
),
Fields@50 = add_optional_bool(
Fields@49,
<<"writeOnly"/utf8>>,
erlang:element(57, Schema)
),
Fields@51 = case erlang:element(58, Schema) of
none ->
Fields@50;
{some, Examples} ->
lists:append(
Fields@50,
[{<<"examples"/utf8>>,
gleam@json:array(Examples, fun(V@3) -> V@3 end)}]
)
end,
Fields@52 = case erlang:element(59, Schema) of
none ->
Fields@51;
{some, D} ->
lists:append(
Fields@51,
[{<<"discriminator"/utf8>>, encode_discriminator(D)}]
)
end,
Fields@53 = case erlang:element(60, Schema) of
none ->
Fields@52;
{some, X} ->
lists:append(Fields@52, [{<<"xml"/utf8>>, encode_xml(X)}])
end,
Fields@54 = case erlang:element(61, Schema) of
none ->
Fields@53;
{some, Docs} ->
lists:append(
Fields@53,
[{<<"externalDocs"/utf8>>, encode_external_docs(Docs)}]
)
end,
Fields@55 = case erlang:element(62, Schema) of
none ->
Fields@54;
{some, E} ->
lists:append(Fields@54, [{<<"example"/utf8>>, E}])
end,
Fields@56 = add_extensions(Fields@55, erlang:element(63, Schema)),
gleam@json:object(Fields@56).
-file("src/nori/encoder.gleam", 327).
?DOC(" Encodes a Parameter object.\n").
-spec encode_parameter(nori@parameter:parameter()) -> gleam@json:json().
encode_parameter(Param) ->
Fields = [{<<"name"/utf8>>, gleam@json:string(erlang:element(2, Param))},
{<<"in"/utf8>>,
gleam@json:string(
nori@parameter:location_to_string(erlang:element(3, Param))
)}],
Fields@1 = add_optional_string(
Fields,
<<"description"/utf8>>,
erlang:element(4, Param)
),
Fields@2 = add_optional_bool(
Fields@1,
<<"required"/utf8>>,
erlang:element(5, Param)
),
Fields@3 = add_optional_bool(
Fields@2,
<<"deprecated"/utf8>>,
erlang:element(6, Param)
),
Fields@4 = add_optional_bool(
Fields@3,
<<"allowEmptyValue"/utf8>>,
erlang:element(7, Param)
),
Fields@5 = case erlang:element(8, Param) of
none ->
Fields@4;
{some, Style} ->
lists:append(
Fields@4,
[{<<"style"/utf8>>,
gleam@json:string(nori@parameter:style_to_string(Style))}]
)
end,
Fields@6 = add_optional_bool(
Fields@5,
<<"explode"/utf8>>,
erlang:element(9, Param)
),
Fields@7 = add_optional_bool(
Fields@6,
<<"allowReserved"/utf8>>,
erlang:element(10, Param)
),
Fields@8 = case erlang:element(11, Param) of
none ->
Fields@7;
{some, Schema} ->
lists:append(
Fields@7,
[{<<"schema"/utf8>>, encode_ref(Schema, fun encode_schema/1)}]
)
end,
Fields@9 = case erlang:element(12, Param) of
none ->
Fields@8;
{some, Example} ->
lists:append(Fields@8, [{<<"example"/utf8>>, Example}])
end,
Fields@10 = case erlang:element(13, Param) of
none ->
Fields@9;
{some, Examples} ->
lists:append(
Fields@9,
[{<<"examples"/utf8>>,
encode_dict(
Examples,
fun(_capture) ->
encode_ref(_capture, fun encode_example/1)
end
)}]
)
end,
Fields@11 = case erlang:element(14, Param) of
none ->
Fields@10;
{some, Content} ->
lists:append(
Fields@10,
[{<<"content"/utf8>>,
encode_dict(Content, fun encode_media_type/1)}]
)
end,
Fields@12 = add_extensions(Fields@11, erlang:element(15, Param)),
gleam@json:object(Fields@12).
-file("src/nori/encoder.gleam", 874).
?DOC(" Encodes a Components object.\n").
-spec encode_components(nori@components:components()) -> gleam@json:json().
encode_components(Components) ->
Fields = [],
Fields@1 = case gleam@dict:is_empty(erlang:element(2, Components)) of
true ->
Fields;
false ->
lists:append(
Fields,
[{<<"schemas"/utf8>>,
encode_dict(
erlang:element(2, Components),
fun encode_schema/1
)}]
)
end,
Fields@2 = case gleam@dict:is_empty(erlang:element(3, Components)) of
true ->
Fields@1;
false ->
lists:append(
Fields@1,
[{<<"responses"/utf8>>,
encode_dict(
erlang:element(3, Components),
fun(_capture) ->
encode_ref(_capture, fun encode_response/1)
end
)}]
)
end,
Fields@3 = case gleam@dict:is_empty(erlang:element(4, Components)) of
true ->
Fields@2;
false ->
lists:append(
Fields@2,
[{<<"parameters"/utf8>>,
encode_dict(
erlang:element(4, Components),
fun(_capture@1) ->
encode_ref(_capture@1, fun encode_parameter/1)
end
)}]
)
end,
Fields@4 = case gleam@dict:is_empty(erlang:element(5, Components)) of
true ->
Fields@3;
false ->
lists:append(
Fields@3,
[{<<"examples"/utf8>>,
encode_dict(
erlang:element(5, Components),
fun(_capture@2) ->
encode_ref(_capture@2, fun encode_example/1)
end
)}]
)
end,
Fields@5 = case gleam@dict:is_empty(erlang:element(6, Components)) of
true ->
Fields@4;
false ->
lists:append(
Fields@4,
[{<<"requestBodies"/utf8>>,
encode_dict(
erlang:element(6, Components),
fun(_capture@3) ->
encode_ref(
_capture@3,
fun encode_request_body/1
)
end
)}]
)
end,
Fields@6 = case gleam@dict:is_empty(erlang:element(7, Components)) of
true ->
Fields@5;
false ->
lists:append(
Fields@5,
[{<<"headers"/utf8>>,
encode_dict(
erlang:element(7, Components),
fun(_capture@4) ->
encode_ref(_capture@4, fun encode_header/1)
end
)}]
)
end,
Fields@7 = case gleam@dict:is_empty(erlang:element(8, Components)) of
true ->
Fields@6;
false ->
lists:append(
Fields@6,
[{<<"securitySchemes"/utf8>>,
encode_dict(
erlang:element(8, Components),
fun(_capture@5) ->
encode_ref(
_capture@5,
fun encode_security_scheme/1
)
end
)}]
)
end,
Fields@8 = case gleam@dict:is_empty(erlang:element(9, Components)) of
true ->
Fields@7;
false ->
lists:append(
Fields@7,
[{<<"links"/utf8>>,
encode_dict(
erlang:element(9, Components),
fun(_capture@6) ->
encode_ref(_capture@6, fun encode_link/1)
end
)}]
)
end,
Fields@9 = case gleam@dict:is_empty(erlang:element(10, Components)) of
true ->
Fields@8;
false ->
lists:append(
Fields@8,
[{<<"callbacks"/utf8>>,
encode_dict(
erlang:element(10, Components),
fun(_capture@7) ->
encode_ref(_capture@7, fun encode_callback/1)
end
)}]
)
end,
Fields@10 = case gleam@dict:is_empty(erlang:element(11, Components)) of
true ->
Fields@9;
false ->
lists:append(
Fields@9,
[{<<"pathItems"/utf8>>,
encode_dict(
erlang:element(11, Components),
fun(_capture@8) ->
encode_ref(_capture@8, fun encode_path_item/1)
end
)}]
)
end,
Fields@11 = add_extensions(Fields@10, erlang:element(12, Components)),
gleam@json:object(Fields@11).
-file("src/nori/encoder.gleam", 30).
?DOC(" Encodes an OpenAPI document to JSON.\n").
-spec encode_document(nori@document:document()) -> gleam@json:json().
encode_document(Doc) ->
Fields = [{<<"openapi"/utf8>>,
gleam@json:string(
nori@internal@version:to_string(erlang:element(2, Doc))
)},
{<<"info"/utf8>>, encode_info(erlang:element(3, Doc))}],
Fields@1 = add_optional_string(
Fields,
<<"jsonSchemaDialect"/utf8>>,
erlang:element(4, Doc)
),
Fields@2 = case erlang:element(5, Doc) of
[] ->
Fields@1;
Servers ->
lists:append(
Fields@1,
[{<<"servers"/utf8>>,
gleam@json:array(Servers, fun encode_server/1)}]
)
end,
Fields@3 = case erlang:element(6, Doc) of
none ->
Fields@2;
{some, Paths} ->
lists:append(
Fields@2,
[{<<"paths"/utf8>>,
encode_dict(
Paths,
fun(_capture) ->
encode_ref(_capture, fun encode_path_item/1)
end
)}]
)
end,
Fields@4 = case gleam@dict:is_empty(erlang:element(7, Doc)) of
true ->
Fields@3;
false ->
lists:append(
Fields@3,
[{<<"webhooks"/utf8>>,
encode_dict(
erlang:element(7, Doc),
fun(_capture@1) ->
encode_ref(_capture@1, fun encode_path_item/1)
end
)}]
)
end,
Fields@5 = case erlang:element(8, Doc) of
none ->
Fields@4;
{some, Components} ->
lists:append(
Fields@4,
[{<<"components"/utf8>>, encode_components(Components)}]
)
end,
Fields@6 = case erlang:element(9, Doc) of
[] ->
Fields@5;
Security ->
lists:append(
Fields@5,
[{<<"security"/utf8>>,
gleam@json:array(
Security,
fun encode_security_requirement/1
)}]
)
end,
Fields@7 = case erlang:element(10, Doc) of
[] ->
Fields@6;
Tags ->
lists:append(
Fields@6,
[{<<"tags"/utf8>>, gleam@json:array(Tags, fun encode_tag/1)}]
)
end,
Fields@8 = case erlang:element(11, Doc) of
none ->
Fields@7;
{some, External_docs} ->
lists:append(
Fields@7,
[{<<"externalDocs"/utf8>>, encode_external_docs(External_docs)}]
)
end,
Fields@9 = add_extensions(Fields@8, erlang:element(12, Doc)),
gleam@json:object(Fields@9).