lib/exiffer.ex
defmodule Exiffer do
@moduledoc """
Documentation for `Exiffer`.
"""
alias Exiffer.JPEG
@jpeg_magic <<0xff, 0xd8>>
def parse(filename) when is_binary(filename) do
buffer = Exiffer.IO.Buffer.new(filename)
{metadata, buffer} = parse(buffer)
:ok = Exiffer.IO.Buffer.close(buffer)
metadata
end
def parse(%{data: <<@jpeg_magic, _rest::binary>>} = buffer) do
{%JPEG{}, _buffer} = JPEG.new(buffer)
end
def parse(%{}) do
raise "Unrecognized file format"
end
end