-module(oaspec@openapi@spec). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/oaspec/openapi/spec.gleam"). -export([method_to_string/1, method_to_lower/1]). -export_type([open_api_spec/0, info/0, contact/0, license/0, server/0, server_variable/0, external_doc/0, tag/0, components/0, security_scheme_in/0, parameter_style/0, security_scheme/0, o_auth2_flow/0, security_scheme_ref/0, security_requirement/0, path_item/0, operation/0, callback/0, parameter_in/0, parameter/0, request_body/0, media_type/0, encoding/0, header/0, link/0, response/0, http_method/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. -type open_api_spec() :: {open_api_spec, binary(), info(), gleam@dict:dict(binary(), path_item()), gleam@option:option(components()), list(server()), list(security_requirement()), gleam@dict:dict(binary(), path_item()), list(tag()), gleam@option:option(external_doc()), gleam@option:option(binary())}. -type info() :: {info, binary(), gleam@option:option(binary()), binary(), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(contact()), gleam@option:option(license())}. -type contact() :: {contact, gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary())}. -type license() :: {license, binary(), gleam@option:option(binary())}. -type server() :: {server, binary(), gleam@option:option(binary()), gleam@dict:dict(binary(), server_variable())}. -type server_variable() :: {server_variable, binary(), list(binary()), gleam@option:option(binary())}. -type external_doc() :: {external_doc, binary(), gleam@option:option(binary())}. -type tag() :: {tag, binary(), gleam@option:option(binary()), gleam@option:option(external_doc())}. -type components() :: {components, gleam@dict:dict(binary(), oaspec@openapi@schema:schema_ref()), gleam@dict:dict(binary(), parameter()), gleam@dict:dict(binary(), request_body()), gleam@dict:dict(binary(), response()), gleam@dict:dict(binary(), security_scheme()), gleam@dict:dict(binary(), path_item()), gleam@dict:dict(binary(), header()), gleam@dict:dict(binary(), binary()), gleam@dict:dict(binary(), link())}. -type security_scheme_in() :: scheme_in_header | scheme_in_query | scheme_in_cookie. -type parameter_style() :: form_style | simple_style | deep_object_style | matrix_style | label_style | space_delimited_style | pipe_delimited_style. -type security_scheme() :: {api_key_scheme, binary(), security_scheme_in()} | {http_scheme, binary(), gleam@option:option(binary())} | {o_auth2_scheme, gleam@option:option(binary()), gleam@dict:dict(binary(), o_auth2_flow())} | {open_id_connect_scheme, binary(), gleam@option:option(binary())}. -type o_auth2_flow() :: {o_auth2_flow, gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@dict:dict(binary(), binary())}. -type security_scheme_ref() :: {security_scheme_ref, binary(), list(binary())}. -type security_requirement() :: {security_requirement, list(security_scheme_ref())}. -type path_item() :: {path_item, gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(operation()), gleam@option:option(operation()), gleam@option:option(operation()), gleam@option:option(operation()), gleam@option:option(operation()), gleam@option:option(operation()), gleam@option:option(operation()), gleam@option:option(operation()), list(parameter()), list(server())}. -type operation() :: {operation, gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), list(binary()), list(parameter()), gleam@option:option(request_body()), gleam@dict:dict(binary(), response()), boolean(), gleam@option:option(list(security_requirement())), gleam@dict:dict(binary(), callback()), list(server()), gleam@option:option(external_doc())}. -type callback() :: {callback, gleam@dict:dict(binary(), path_item())}. -type parameter_in() :: in_path | in_query | in_header | in_cookie. -type parameter() :: {parameter, binary(), parameter_in(), gleam@option:option(binary()), boolean(), gleam@option:option(oaspec@openapi@schema:schema_ref()), gleam@option:option(parameter_style()), gleam@option:option(boolean()), boolean(), boolean(), gleam@dict:dict(binary(), media_type()), gleam@dict:dict(binary(), binary())}. -type request_body() :: {request_body, gleam@option:option(binary()), gleam@dict:dict(binary(), media_type()), boolean()}. -type media_type() :: {media_type, gleam@option:option(oaspec@openapi@schema:schema_ref()), gleam@option:option(binary()), gleam@dict:dict(binary(), binary()), gleam@dict:dict(binary(), encoding())}. -type encoding() :: {encoding, gleam@option:option(binary()), gleam@option:option(parameter_style()), gleam@option:option(boolean())}. -type header() :: {header, gleam@option:option(binary()), boolean(), gleam@option:option(oaspec@openapi@schema:schema_ref())}. -type link() :: {link, gleam@option:option(binary()), gleam@option:option(binary())}. -type response() :: {response, gleam@option:option(binary()), gleam@dict:dict(binary(), media_type()), gleam@dict:dict(binary(), header()), gleam@dict:dict(binary(), link())}. -type http_method() :: get | post | put | delete | patch | head | options | trace. -file("src/oaspec/openapi/spec.gleam", 267). ?DOC(" Convert HTTP method to string.\n"). -spec method_to_string(http_method()) -> binary(). method_to_string(Method) -> case Method of get -> <<"GET"/utf8>>; post -> <<"POST"/utf8>>; put -> <<"PUT"/utf8>>; delete -> <<"DELETE"/utf8>>; patch -> <<"PATCH"/utf8>>; head -> <<"HEAD"/utf8>>; options -> <<"OPTIONS"/utf8>>; trace -> <<"TRACE"/utf8>> end. -file("src/oaspec/openapi/spec.gleam", 281). ?DOC(" Convert HTTP method to lowercase string.\n"). -spec method_to_lower(http_method()) -> binary(). method_to_lower(Method) -> case Method of get -> <<"get"/utf8>>; post -> <<"post"/utf8>>; put -> <<"put"/utf8>>; delete -> <<"delete"/utf8>>; patch -> <<"patch"/utf8>>; head -> <<"head"/utf8>>; options -> <<"options"/utf8>>; trace -> <<"trace"/utf8>> end.