-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 ).