diff --git a/src/hz.erl b/src/hz.erl index adfeae2..2827f79 100644 --- a/src/hz.erl +++ b/src/hz.erl @@ -792,16 +792,22 @@ contract_code(ID) -> contract_source(ID) -> case request(["/v3/contracts/", ID, "/source"]) of - {ok, #{"source" := Source}} -> extract(Source); + {ok, #{"source" := Blobby}} -> extract(Blobby); {ok, #{"reason" := Reason}} -> {error, Reason}; Error -> Error end. -extract(TarBaby) -> +extract(Blobby) -> + case gmser_api_encoder:safe_decode(bytearray, Blobby) of + {ok, TarBaby} -> extract2(TarBaby); + {error, invalid_encoding} -> {ok, Blobby} + end. + +extract2(TarBaby) -> case erl_tar:extract({binary, TarBaby}, [memory, compressed]) of {ok, Project} -> {ok, Project}; - Error -> - io:format("dis chit happen: ~tp", [Error]), + Error -> + io:format("Dis chit happen: ~tp~n", [Error]), {ok, TarBaby} end.