update discord patterns
This commit is contained in:
parent
6b054a0944
commit
5610484cce
1 changed files with 27 additions and 6 deletions
|
|
@ -6,23 +6,44 @@ defmodule ZoeyscomputerWeb.DiscordHandler do
|
|||
|
||||
def init(opts), do: opts
|
||||
|
||||
def call(%{path_info: ["images", _id]} = conn, _opts) do
|
||||
user_agent = get_req_header(conn, "user-agent")
|
||||
Logger.info("user-agent: #{user_agent}")
|
||||
@discord_patterns [
|
||||
~r/^Mozilla\/5\.0 \(compatible; Discordbot\//,
|
||||
# Pattern for common Discord web client
|
||||
~r/^Mozilla\/5\.0.*Firefox\/.*$/
|
||||
]
|
||||
|
||||
case user_agent do
|
||||
["Mozilla/5.0 (compatible; Discordbot/" <> _rest] -> handle_discord(conn)
|
||||
_ -> conn
|
||||
def call(%{path_info: ["images", _id | _]} = conn, _opts) do
|
||||
user_agent = List.first(get_req_header(conn, "user-agent"))
|
||||
request_id = Logger.metadata()[:request_id]
|
||||
|
||||
Logger.info("Processing image request",
|
||||
user_agent: user_agent,
|
||||
request_id: request_id
|
||||
)
|
||||
|
||||
cond do
|
||||
is_discord_request?(user_agent) -> handle_discord(conn)
|
||||
true -> conn
|
||||
end
|
||||
end
|
||||
|
||||
def call(conn, _opts), do: conn
|
||||
|
||||
defp is_discord_request?(nil), do: false
|
||||
|
||||
defp is_discord_request?(user_agent) do
|
||||
Enum.any?(@discord_patterns, fn pattern ->
|
||||
Regex.match?(pattern, user_agent)
|
||||
end)
|
||||
end
|
||||
|
||||
defp handle_discord(%{path_info: ["images", id]} = conn) do
|
||||
case download_from_s3("imgs", id) do
|
||||
{:ok, image_binary, content_type} ->
|
||||
conn
|
||||
|> put_resp_content_type(content_type)
|
||||
# Optional: Add caching
|
||||
|> put_resp_header("cache-control", "public, max-age=86400")
|
||||
|> send_resp(200, image_binary)
|
||||
|> halt()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue