Fix typespec

Source needs to be defined as a binary.
This commit is contained in:
2026-05-21 17:07:57 +09:00
parent 88aeb39d4a
commit 2a7079129f
+8 -10
View File
@@ -788,9 +788,9 @@ contract_code(ID) ->
Result :: {ok, Source}
| {project, Bundle}
| {error, Reason},
Source :: string(),
Source :: binary(),
Bundle :: [{FilePath :: string(), Contents :: binary()}],
Reason :: chain_error() | string().
Reason :: chain_error() | string().
%% @doc
%% Retrieve the code of a contract as represented on chain.
@@ -801,23 +801,21 @@ contract_source(ID) ->
Error -> Error
end.
extract(<<"ba_", _/binary>> = Blobby) ->
extract(Blobby) ->
case gmser_api_encoder:safe_decode(bytearray, Blobby) of
{ok, TarBaby} -> extract2(TarBaby);
{error, invalid_encoding} -> {ok, unicode:characters_to_list(Blobby)}
end;
extract(Blobby) when is_binary(Blobby) ->
{ok, unicode:characters_to_list(Blobby)}.
{ok, TarBaby} -> extract2(TarBaby);
{error, invalid_encoding} -> {ok, Blobby}
end.
extract2(TarBaby) ->
case erl_tar:extract({binary, TarBaby}, [memory, compressed]) of
{ok, [{_File, Source}]} ->
{ok, unicode:characters_to_list(Source)};
{ok, Source};
{ok, Bundle} ->
{project, Bundle};
Error ->
io:format("Dis chit happen: ~tp~n", [Error]),
{ok, unicode:characters_to_list(TarBaby)}
{ok, TarBaby}
end.