diff --git a/lib/ssb_bfe.ex b/lib/ssb_bfe.ex index 608e9ad..1933c63 100644 --- a/lib/ssb_bfe.ex +++ b/lib/ssb_bfe.ex @@ -15,4 +15,26 @@ defmodule SsbBfe do def hello do :world end + + def encode(value) when is_bitstring(value) do + cond do + String.starts_with?(value, "@") -> + SsbBfe.Encoder.encode_feed(value) + + String.starts_with?(value, "%") -> + SsbBfe.Encoder.encode_msg(value) + + String.starts_with?(value, "&") -> + SsbBfe.Encoder.encode_blob(value) + + String.ends_with?(value, ".sig.ed25519") -> + SsbBfe.Encoder.encode_sig(value) + + String.ends_with?(value, [".box", ".box2"]) -> + SsbBfe.Encoder.encode_box(value) + + true -> + SsbBfe.Encoder.encode_str(value) + end + end end diff --git a/lib/ssb_bfe/encoder.ex b/lib/ssb_bfe/encoder.ex index da5ca7b..39174c0 100644 --- a/lib/ssb_bfe/encoder.ex +++ b/lib/ssb_bfe/encoder.ex @@ -1,5 +1,5 @@ # might be good to use a multiclause function for the `encode` function -# - use the `where` conditional guard with e.g. `is_number` +# - use the `when` conditional guard with e.g. `is_number` defmodule SsbBfe.Encoder do # Extract the base64 substring from a sigil-link and decode it.