diff --git a/src/hz.erl b/src/hz.erl index 75b9911..9200e89 100644 --- a/src/hz.erl +++ b/src/hz.erl @@ -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.