Packages

✨ Generate Gleam SDKs from OpenAPI specifications

Current section

Files

Jump to
gilly src gilly@openapi@operation.erl
Raw

src/gilly@openapi@operation.erl

-module(gilly@openapi@operation).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gilly/openapi/operation.gleam").
-export([operation_decoder/0]).
-export_type([operation/0, parameter_location/0, parameter/0, request_body/0, media_type/0, response/0]).
-type operation() :: {operation,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
list(binary()),
list(parameter()),
gleam@option:option(request_body()),
list({binary(), response()})}.
-type parameter_location() :: 'query' | path | header | cookie.
-type parameter() :: {parameter,
binary(),
parameter_location(),
gleam@option:option(binary()),
boolean(),
gleam@option:option(gilly@openapi@schema:schema())}.
-type request_body() :: {request_body,
gleam@option:option(binary()),
boolean(),
list({binary(), media_type()})}.
-type media_type() :: {media_type,
gleam@option:option(gilly@openapi@schema:schema())}.
-type response() :: {response, binary(), list({binary(), media_type()})}.
-file("src/gilly/openapi/operation.gleam", 69).
-spec parameter_location_decoder() -> gleam@dynamic@decode:decoder(parameter_location()).
parameter_location_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Variant) -> case Variant of
<<"query"/utf8>> ->
gleam@dynamic@decode:success('query');
<<"path"/utf8>> ->
gleam@dynamic@decode:success(path);
<<"header"/utf8>> ->
gleam@dynamic@decode:success(header);
<<"cookie"/utf8>> ->
gleam@dynamic@decode:success(cookie);
_ ->
gleam@dynamic@decode:failure(
'query',
<<"ParameterLocation"/utf8>>
)
end end
).
-file("src/gilly/openapi/operation.gleam", 90).
-spec parameter_decoder() -> gleam@dynamic@decode:decoder(parameter()).
parameter_decoder() ->
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name) ->
gleam@dynamic@decode:field(
<<"in"/utf8>>,
parameter_location_decoder(),
fun(In_) ->
gleam@dynamic@decode:optional_field(
<<"description"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Description) ->
gleam@dynamic@decode:optional_field(
<<"required"/utf8>>,
false,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Required) ->
gleam@dynamic@decode:optional_field(
<<"schema"/utf8>>,
none,
gleam@dynamic@decode:optional(
gilly@openapi@schema:schema_decoder(
)
),
fun(Schema) ->
gleam@dynamic@decode:success(
{parameter,
Name,
In_,
Description,
Required,
Schema}
)
end
)
end
)
end
)
end
)
end
).
-file("src/gilly/openapi/operation.gleam", 135).
-spec media_type_decoder() -> gleam@dynamic@decode:decoder(media_type()).
media_type_decoder() ->
gleam@dynamic@decode:optional_field(
<<"schema"/utf8>>,
none,
gleam@dynamic@decode:optional(gilly@openapi@schema:schema_decoder()),
fun(Schema) -> gleam@dynamic@decode:success({media_type, Schema}) end
).
-file("src/gilly/openapi/operation.gleam", 115).
-spec request_body_decoder() -> gleam@dynamic@decode:decoder(request_body()).
request_body_decoder() ->
gleam@dynamic@decode:optional_field(
<<"description"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Description) ->
gleam@dynamic@decode:optional_field(
<<"required"/utf8>>,
false,
{decoder, fun gleam@dynamic@decode:decode_bool/1},
fun(Required) ->
gleam@dynamic@decode:optional_field(
<<"content"/utf8>>,
[],
begin
_pipe = gleam@dynamic@decode:dict(
{decoder,
fun gleam@dynamic@decode:decode_string/1},
media_type_decoder()
),
gleam@dynamic@decode:map(_pipe, fun maps:to_list/1)
end,
fun(Content) ->
gleam@dynamic@decode:success(
{request_body, Description, Required, Content}
)
end
)
end
)
end
).
-file("src/gilly/openapi/operation.gleam", 148).
-spec response_decoder() -> gleam@dynamic@decode:decoder(response()).
response_decoder() ->
gleam@dynamic@decode:optional_field(
<<"description"/utf8>>,
<<""/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Description) ->
gleam@dynamic@decode:optional_field(
<<"content"/utf8>>,
[],
begin
_pipe = gleam@dynamic@decode:dict(
{decoder, fun gleam@dynamic@decode:decode_string/1},
media_type_decoder()
),
gleam@dynamic@decode:map(_pipe, fun maps:to_list/1)
end,
fun(Content) ->
gleam@dynamic@decode:success(
{response, Description, Content}
)
end
)
end
).
-file("src/gilly/openapi/operation.gleam", 18).
-spec operation_decoder() -> gleam@dynamic@decode:decoder(operation()).
operation_decoder() ->
gleam@dynamic@decode:optional_field(
<<"operationId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Operation_id) ->
gleam@dynamic@decode:optional_field(
<<"summary"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Summary) ->
gleam@dynamic@decode:optional_field(
<<"description"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Description) ->
gleam@dynamic@decode:optional_field(
<<"tags"/utf8>>,
[],
gleam@dynamic@decode:list(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Tags) ->
gleam@dynamic@decode:optional_field(
<<"parameters"/utf8>>,
[],
gleam@dynamic@decode:list(
parameter_decoder()
),
fun(Parameters) ->
gleam@dynamic@decode:optional_field(
<<"requestBody"/utf8>>,
none,
gleam@dynamic@decode:optional(
request_body_decoder()
),
fun(Request_body) ->
gleam@dynamic@decode:optional_field(
<<"responses"/utf8>>,
[],
begin
_pipe = gleam@dynamic@decode:dict(
{decoder,
fun gleam@dynamic@decode:decode_string/1},
response_decoder(
)
),
gleam@dynamic@decode:map(
_pipe,
fun maps:to_list/1
)
end,
fun(Responses) ->
gleam@dynamic@decode:success(
{operation,
Operation_id,
Summary,
Description,
Tags,
Parameters,
Request_body,
Responses}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).