aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGuillermo Ramos2020-02-05 17:43:36 +0100
committerGuillermo Ramos2020-02-05 17:43:36 +0100
commit20dce72da7222fa636d4306bf1c6f1b478194a3d (patch)
tree752fae5b3a92d1ab066dcf225cda815977c8caa7 /lib
parenta0eec8eadae94a71974868ac8d48820e0662857b (diff)
downloadwaev-20dce72da7222fa636d4306bf1c6f1b478194a3d.tar.gz
Photos (WIP)
Diffstat (limited to 'lib')
-rw-r--r--lib/waev/export.ex23
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}