Packages

✨ Generate Gleam SDKs from OpenAPI specifications

Current section

Files

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

src/gilly@openapi@error.erl

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