diff --git a/src/hz.erl b/src/hz.erl index 0e2271b..0008605 100644 --- a/src/hz.erl +++ b/src/hz.erl @@ -801,19 +801,23 @@ contract_source(ID) -> Error -> Error end. -extract(Blobby) -> +extract(<<"ba_", _/binary>> = Blobby) -> case gmser_api_encoder:safe_decode(bytearray, Blobby) of - {ok, TarBaby} -> extract2(TarBaby); - {error, invalid_encoding} -> {ok, Blobby} - end. + {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)}. extract2(TarBaby) -> case erl_tar:extract({binary, TarBaby}, [memory, compressed]) of + {ok, [{_File, Source}]} -> + {ok, unicode:characters_to_list(Source)}; {ok, Bundle} -> {project, Bundle}; Error -> io:format("Dis chit happen: ~tp~n", [Error]), - {ok, TarBaby} + {ok, unicode:characters_to_list(TarBaby)} end. @@ -895,6 +899,11 @@ request(Path) -> hz_man:request(unicode:characters_to_list(Path)). +-spec request(Path, Payload) -> {ok, Value} | {error, Reason} + when Path :: unicode:charlist(), + Payload :: unicode:charlist(), + Value :: map(), + Reason :: hz:chain_error(). request(Path, Payload) -> hz_man:request(unicode:characters_to_list(Path), Payload).