diff --git a/config/config.exs b/config/config.exs index d0fbed4..fb592cd 100644 --- a/config/config.exs +++ b/config/config.exs @@ -8,7 +8,8 @@ import Config config :runosaari, - ecto_repos: [Runosaari.Repo] + ecto_repos: [Runosaari.Repo], + public_s3_host: System.get_env("S3_PUBLIC_HOST") # Configures the endpoint config :runosaari, RunosaariWeb.Endpoint, @@ -35,5 +36,5 @@ config :ex_aws, access_key_id: System.get_env("S3_ACCESS_KEY"), secret_access_key: System.get_env("S3_SECRET_KEY"), s3: [ - host: System.get_env("S3_BUCKET_HOST") + host: System.get_env("S3_PRIVATE_HOST") ] diff --git a/lib/runosaari_web/controllers/performer_controller.ex b/lib/runosaari_web/controllers/performer_controller.ex index 35d7158..39a5298 100644 --- a/lib/runosaari_web/controllers/performer_controller.ex +++ b/lib/runosaari_web/controllers/performer_controller.ex @@ -19,8 +19,27 @@ defmodule RunosaariWeb.PerformerController do render(conn, "new.html", changeset: changeset) end - def create(conn, %{"performer" => performer_params}) do - case Registration.create_performer(performer_params) do + def create(conn, %{"performer" => %{"photo" => photo_params} = performer_params}) do + file_uuid = UUID.uuid4(:hex) + photo_filename = photo_params.filename + unique_filename = "#{file_uuid}-#{photo_filename}" + {:ok, photo_binary} = File.read(photo_params.path) + bucket_name = System.get_env("S3_BUCKET_NAME") + public_host = System.get_env("S3_PUBLIC_HOST") + + photo = + ExAws.S3.put_object(bucket_name, unique_filename, photo_binary) + |> ExAws.request!() + + updated_params = + performer_params + |> Map.update(photo, photo_params, fn _value -> + "https://#{public_host}/#{bucket_name}/performer_photos/#{unique_filename}" + end) + + updated_changeset = Performer.changeset(%Performer{}, updated_params) + + case Registration.create_performer(updated_changeset) do {:ok, _performer} -> conn |> put_flash( diff --git a/lib/runosaari_web/templates/performer/form.html.eex b/lib/runosaari_web/templates/performer/form.html.eex index 240758e..34ed162 100644 --- a/lib/runosaari_web/templates/performer/form.html.eex +++ b/lib/runosaari_web/templates/performer/form.html.eex @@ -17,9 +17,9 @@ <%= textarea form, :seqnum %> <%= error_tag form, :seqnum %> - <%= label form, :photo_path, "Esiintyjän kuva" %> - <%= file_input form, :photo_path %> - <%= error_tag form, :photo_path %> + <%= label form, :photo, "Esiintyjän kuva" %> + <%= file_input form, :photo %> + <%= error_tag form, :photo %>