Skip to content

Commit

Permalink
Add string support for multiaddr:protocols
Browse files Browse the repository at this point in the history
  • Loading branch information
madninja committed Aug 22, 2018
1 parent 061d781 commit 9bf2369
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/multiaddr.erl
Expand Up @@ -52,7 +52,7 @@ to_string(Protocols) when is_list(Protocols) ->
throw:{error, _} -> error(bad_arg)
end.

-spec protocols(multiaddr()) -> [protocol()].
-spec protocols(multiaddr() | string()) -> [protocol()].
protocols(Addr) ->
try
protocols(Addr, [])
Expand All @@ -62,7 +62,7 @@ protocols(Addr) ->

protocols(<<>>, Acc) ->
Acc;
protocols(Bytes, Acc) ->
protocols(Bytes, Acc) when is_binary(Bytes) ->
{Code, Tail} = small_ints:decode_varint(Bytes),
case maddr_protocol:for_code(Code) of

Expand All @@ -84,7 +84,10 @@ protocols(Bytes, Acc) ->
[{Name, undefined} | protocols(Tail, Acc)];
{error, Error} ->
throw({error, Error})
end.
end;
protocols(Str, Acc) ->
protocols(multiaddr:new(Str), Acc).


encode_string([], Acc) ->
Acc;
Expand Down
1 change: 1 addition & 0 deletions test/multiaddr_test.erl
Expand Up @@ -99,6 +99,7 @@ encode_binary_test() ->
protocols_test() ->
Address = multiaddr:new("/ip4/127.0.0.1/udp/1234"),
Protocols = multiaddr:protocols(Address),
?assertEqual(Protocols, multiaddr:protocols("/ip4/127.0.0.1/udp/1234")),
?assertEqual(2, length(Protocols)),
?assertMatch([{"ip4", "127.0.0.1"}, {"udp", "1234"}], Protocols),
?assertEqual(Address, multiaddr:new(multiaddr:to_string(Protocols))).
Expand Down

0 comments on commit 9bf2369

Please sign in to comment.