diff options
author | Guillermo Ramos | 2020-02-05 17:43:36 +0100 |
---|---|---|
committer | Guillermo Ramos | 2020-02-05 17:43:36 +0100 |
commit | 20dce72da7222fa636d4306bf1c6f1b478194a3d (patch) | |
tree | 752fae5b3a92d1ab066dcf225cda815977c8caa7 /lib | |
parent | a0eec8eadae94a71974868ac8d48820e0662857b (diff) | |
download | waev-20dce72da7222fa636d4306bf1c6f1b478194a3d.tar.gz |
Photos (WIP)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/waev/export.ex | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/waev/export.ex b/lib/waev/export.ex index e513fd1..cc24d70 100644 --- a/lib/waev/export.ex +++ b/lib/waev/export.ex @@ -11,7 +11,14 @@ defmodule Waev.Export do defmodule Message do defmodule Photo do - defstruct filename: nil, mime: nil, blob: nil + defstruct filename: nil, blob: nil + + def valid_extension?(filename) do + valid_extensions = ["png", "jpeg", "jpg"] + extension = + filename |> String.split(".") |> Enum.at(-1) |> String.downcase() + Enum.member?(valid_extensions, extension) + end end defmodule File do @@ -34,7 +41,19 @@ defmodule Waev.Export do {text, attachment} = case Regex.run(~r/([[:ascii:]]+) \(archivo adjunto\)$/u, text) do [_, filename] -> - {nil, %File{filename: filename, available: File.path(e.id, filename) != :error}} + available = File.path(e.id, filename) != :error + # IO.puts("filename: #{filename}, av: #{available}, ve: #{}") + if available and Message.Photo.valid_extension?(filename) do + case Elixir.File.read(filename) do + {:ok, binary} -> + {nil, %Photo{filename: filename, blob: binary}} + {:error, reason} -> + Logger.error("Error opening photo #{filename}: #{reason}") + {nil, %File{filename: filename, available: false}} + end + else + {nil, %File{filename: filename, available: available}} + end nil -> {text, nil} |