-module(gilly@openapi@error). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/gilly/openapi/error.gleam"). -export([describe_error/1]). -export_type([error/0]). -type error() :: {json_error, gleam@json:decode_error()} | {unsupported_version, binary()} | {parse_error, list(gleam@dynamic@decode:decode_error())}. -file("src/gilly/openapi/error.gleam", 38). -spec describe_decode_errors(list(gleam@dynamic@decode:decode_error())) -> binary(). describe_decode_errors(Errors) -> gleam@string:join( gleam@list:map( Errors, fun(E) -> {decode_error, Expected, Found, Path} = E, Path_str = gleam@string:join(Path, <<" -> "/utf8>>), <<<<<<<<<<"Expected "/utf8, Expected/binary>>/binary, " but got "/utf8>>/binary, Found/binary>>/binary, " at path "/utf8>>/binary, Path_str/binary>> end ), <<"; "/utf8>> ). -file("src/gilly/openapi/error.gleam", 28). -spec describe_json_error(gleam@json:decode_error()) -> binary(). describe_json_error(Error) -> case Error of unexpected_end_of_input -> <<"Unexpected end of input"/utf8>>; {unexpected_byte, Byte} -> <<"Unexpected byte: "/utf8, Byte/binary>>; {unexpected_sequence, Seq} -> <<"Unexpected sequence: "/utf8, Seq/binary>>; {unable_to_decode, Errors} -> <<"Unable to decode: "/utf8, (describe_decode_errors(Errors))/binary>> end. -file("src/gilly/openapi/error.gleam", 17). -spec describe_error(error()) -> binary(). describe_error(Error) -> case Error of {json_error, Inner} -> <<"JSON parsing error: "/utf8, (describe_json_error(Inner))/binary>>; {unsupported_version, Version} -> <<"Unsupported OpenAPI version: "/utf8, Version/binary>>; {parse_error, Errors} -> <<"Failed to decode OpenAPI specification: "/utf8, (describe_decode_errors(Errors))/binary>> end.