From 053164fb9be493f86a824aba2516b0f703551b9b Mon Sep 17 00:00:00 2001 From: Robert Prehn <3952444+prehnRA@users.noreply.github.com> Date: Sat, 14 Aug 2021 14:14:23 -0500 Subject: [PATCH] fix: Roll back to MIME 1.6.0 until 2.x is compatible with Phoenix --- apps/app/assets/package-lock.json | 4 ++-- .../lib/content_web/controllers/posts_controller.ex | 12 +++++++++++- apps/content/mix.exs | 1 + mix.lock | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/app/assets/package-lock.json b/apps/app/assets/package-lock.json index 91217a1c..6c6beedd 100644 --- a/apps/app/assets/package-lock.json +++ b/apps/app/assets/package-lock.json @@ -6820,7 +6820,7 @@ } }, "../../../deps/phoenix_html": { - "version": "2.14.3" + "version": "3.0.0" }, "node_modules/unicode-match-property-ecmascript": { "version": "1.0.4", @@ -11238,7 +11238,7 @@ } }, "../../../deps/phoenix_live_view": { - "version": "0.15.7", + "version": "0.16.0", "license": "MIT" }, "node_modules/stylehacks": { diff --git a/apps/content/lib/content_web/controllers/posts_controller.ex b/apps/content/lib/content_web/controllers/posts_controller.ex index 903d00f8..65857566 100644 --- a/apps/content/lib/content_web/controllers/posts_controller.ex +++ b/apps/content/lib/content_web/controllers/posts_controller.ex @@ -114,10 +114,20 @@ defmodule Legendary.Content.PostsController do {:ok, decoded} = post.content |> Base.decode64 conn - |> put_resp_content_type(post.mime_type, "binary") + |> put_resp_content_type(post.mime_type, charset(post.mime_type)) |> send_resp(conn.status || 200, decoded) _ -> render(conn, template, post: post, page: page, thumbs: thumbs) end end + + defp charset(mime_type) do + do_charset(String.split(mime_type, "/")) + end + + defp do_charset(["application", _]), do: "binary" + defp do_charset(["video", _]), do: "binary" + defp do_charset(["audio", _]), do: "binary" + defp do_charset(["image", _]), do: "binary" + defp do_charset(_), do: "utf-8" end diff --git a/apps/content/mix.exs b/apps/content/mix.exs index 0b88d4bf..35d2b420 100644 --- a/apps/content/mix.exs +++ b/apps/content/mix.exs @@ -48,6 +48,7 @@ defmodule Legendary.Content.MixProject do {:gettext, "~> 0.11"}, {:html_sanitize_ex, "~> 1.4.1"}, {:jason, "~> 1.0"}, + {:mime, "~> 1.6.0"}, {:mock, "~> 0.3.0", only: :test}, {:meck, "~> 0.8.13", only: :test}, {:neotomex, "~> 0.1.7"}, diff --git a/mix.lock b/mix.lock index 484ed7a3..cc3bd36b 100644 --- a/mix.lock +++ b/mix.lock @@ -56,7 +56,7 @@ "nimble_parsec": {:hex, :nimble_parsec, "1.1.0", "3a6fca1550363552e54c216debb6a9e95bd8d32348938e13de5eda962c0d7f89", [:mix], [], "hexpm", "08eb32d66b706e913ff748f11694b17981c0b04a33ef470e33e11b3d3ac8f54b"}, "oban": {:hex, :oban, "2.1.0", "034144686f7e76a102b5d67731f098d98a9e4a52b07c25ad580a01f83a7f1cf5", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c6f067fa3b308ed9e0e6beb2b34277c9c4e48bf95338edabd8f4a757a26e04c2"}, "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, - "phoenix": {:hex, :phoenix, "1.5.10", "3ee7d5c17ff9626d72d374d8fc8909bf00f4323fd15549fbe3abbbd38b5299c8", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f9c2eaa5a8fe5a412610c6aa84ccdb6f3e92f333d4df7fbaeb0d5a157dbfb48d"}, + "phoenix": {:hex, :phoenix, "1.5.9", "a6368d36cfd59d917b37c44386e01315bc89f7609a10a45a22f47c007edf2597", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7e4bce20a67c012f1fbb0af90e5da49fa7bf0d34e3a067795703b74aef75427d"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.3.0", "2c69a452c2e0ee8c93345ae1cdc1696ef4877ff9cbb15c305def41960c3c4ebf", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "0ac491924217550c8f42c81c1f390b5d81517d12ceaf9abf3e701156760a848e"}, "phoenix_html": {:hex, :phoenix_html, "3.0.0", "b50048ea6be552af0f19218f703b1cc6c182f569fb28f8a849056e452a2bfed5", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "373d054f29812c5ba98096762cacfc320c5e484bfb40501511e39f662c2cd1c7"}, "phoenix_html_sanitizer": {:hex, :phoenix_html_sanitizer, "1.1.0", "ea9e1162217621208ba6b2951a24abe2c06b39347f65c22c31312f9f5ac0fa75", [:mix], [{:html_sanitize_ex, "~> 1.1", [hex: :html_sanitize_ex, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}], "hexpm", "089f28f0592d58f7cf1f032b89c13e873dc73c77a2ccf3386aee976c6ff077c9"},