Skip to content

Commit

Permalink
Change is_decodable/1 to decodable?/1 (#138)
Browse files Browse the repository at this point in the history
  • Loading branch information
azeemchauhan authored Jan 27, 2025
1 parent e7a2e34 commit ed27101
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 17 deletions.
7 changes: 5 additions & 2 deletions lib/avrora/codec.ex
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ defmodule Avrora.Codec do
## Examples
...> Avrora.Codec.Plain.is_decodable(<<1, 2, 3>>)
...> Avrora.Codec.Plain.decodable?(<<1, 2, 3>>)
true
...> Avrora.Codec.SchemaRegistry.is_decodable(<<1, 2, 3>>)
...> Avrora.Codec.SchemaRegistry.decodable?(<<1, 2, 3>>)
false
"""
@callback decodable?(payload :: binary()) :: boolean

@doc deprecated: "Use `Avrora.Codec.Plain.decodable?/1` instead."
@callback is_decodable(payload :: binary()) :: boolean

@doc """
Expand Down
11 changes: 10 additions & 1 deletion lib/avrora/codec/object_container_file.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,22 @@ defmodule Avrora.Codec.ObjectContainerFile do
alias Avrora.Schema.Encoder, as: SchemaEncoder

@impl true
def is_decodable(payload) when is_binary(payload) do
def decodable?(payload) when is_binary(payload) do
case payload do
<<@magic_bytes, _::binary>> -> true
_ -> false
end
end

@impl true
def is_decodable(payload) when is_binary(payload) do
Logger.warning(
"`Avrora.Codec.ObjectContainerFile.is_decodable/1` is deprecated, use `Avrora.Codec.ObjectContainerFile.decodable?/1` instead"
)

decodable?(payload)
end

@impl true
def extract_schema(payload) when is_binary(payload) do
with {:ok, {headers, {_, _, _, _, _, _, full_name, _} = erlavro, _}} <- do_decode(payload),
Expand Down
10 changes: 9 additions & 1 deletion lib/avrora/codec/plain.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,19 @@ defmodule Avrora.Codec.Plain do

@behaviour Avrora.Codec

require Logger
alias Avrora.AvroDecoderOptions
alias Avrora.Resolver

@impl true
def is_decodable(payload) when is_binary(payload), do: true
def decodable?(payload) when is_binary(payload), do: true

@impl true
def is_decodable(payload) when is_binary(payload) do
Logger.warning("`Avrora.Codec.Plain.is_decodable/1` is deprecated, use `Avrora.Codec.Plain.decodable?/1` instead")

decodable?(payload)
end

@impl true
def extract_schema(_payload), do: {:error, :schema_not_found}
Expand Down
11 changes: 10 additions & 1 deletion lib/avrora/codec/schema_registry.ex
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,22 @@ defmodule Avrora.Codec.SchemaRegistry do
alias Avrora.Schema

@impl true
def is_decodable(payload) when is_binary(payload) do
def decodable?(payload) when is_binary(payload) do
case payload do
<<@magic_bytes, _::binary>> -> true
_ -> false
end
end

@impl true
def is_decodable(payload) when is_binary(payload) do
Logger.warning(
"`Avrora.Codec.SchemaRegistry.is_decodable/1` is deprecated, use `Avrora.Codec.SchemaRegistry.decodable?/1` instead"
)

decodable?(payload)
end

@impl true
def extract_schema(payload) when is_binary(payload) do
case payload do
Expand Down
6 changes: 3 additions & 3 deletions lib/avrora/encoder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ defmodule Avrora.Encoder do
def extract_schema(payload) when is_binary(payload) do
codec =
[Codec.SchemaRegistry, Codec.ObjectContainerFile, Codec.Plain]
|> Enum.find(& &1.is_decodable(payload))
|> Enum.find(& &1.decodable?(payload))

codec.extract_schema(payload)
end
Expand All @@ -46,7 +46,7 @@ defmodule Avrora.Encoder do
def decode(payload) when is_binary(payload) do
codec =
[Codec.SchemaRegistry, Codec.ObjectContainerFile, Codec.Plain]
|> Enum.find(& &1.is_decodable(payload))
|> Enum.find(& &1.decodable?(payload))

codec.decode(payload)
end
Expand All @@ -73,7 +73,7 @@ defmodule Avrora.Encoder do

codec =
[Codec.SchemaRegistry, Codec.ObjectContainerFile, Codec.Plain]
|> Enum.find(& &1.is_decodable(payload))
|> Enum.find(& &1.decodable?(payload))

if codec == Codec.Plain do
Logger.warning(
Expand Down
6 changes: 3 additions & 3 deletions test/avrora/codec/object_container_file_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ defmodule Avrora.Codec.ObjectContainerFileTest do
setup :verify_on_exit!
setup :support_config

describe "is_decodable/1" do
describe "decodable?/1" do
test "when payload is a valid binary" do
assert Codec.ObjectContainerFile.is_decodable(payment_message())
assert Codec.ObjectContainerFile.decodable?(payment_message())
end

test "when payload is not a valid binary" do
refute Codec.ObjectContainerFile.is_decodable(<<0, 1, 2>>)
refute Codec.ObjectContainerFile.decodable?(<<0, 1, 2>>)
end
end

Expand Down
6 changes: 3 additions & 3 deletions test/avrora/codec/plain_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ defmodule Avrora.Codec.PlainTest do
setup :verify_on_exit!
setup :support_config

describe "is_decodable/1" do
describe "decodable?/1" do
test "when payload is a valid binary" do
assert Codec.Plain.is_decodable(payment_message())
assert Codec.Plain.decodable?(payment_message())
end

test "when payload is not a valid binary" do
assert Codec.Plain.is_decodable(<<0, 1, 2>>)
assert Codec.Plain.decodable?(<<0, 1, 2>>)
end
end

Expand Down
6 changes: 3 additions & 3 deletions test/avrora/codec/schema_registry_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ defmodule Avrora.Codec.SchemaRegistryTest do
setup :verify_on_exit!
setup :support_config

describe "is_decodable/1" do
describe "decodable?/1" do
test "when payload is a valid binary" do
assert Codec.SchemaRegistry.is_decodable(payment_message())
assert Codec.SchemaRegistry.decodable?(payment_message())
end

test "when payload is not a valid binary" do
assert Codec.SchemaRegistry.is_decodable(<<0, 1, 2>>)
assert Codec.SchemaRegistry.decodable?(<<0, 1, 2>>)
end
end

Expand Down

0 comments on commit ed27101

Please sign in to comment.