From 18438a9bf0added295b119de2838fcea0f28b701 Mon Sep 17 00:00:00 2001
From: Mark Felder <feld@FreeBSD.org>
Date: Tue, 7 Jul 2020 11:21:05 -0500
Subject: [PATCH] Add "Bot" to User Agent to coerce Twitter into serving OGP
 <meta> tags.

---
 CHANGELOG.md                         | 1 +
 lib/pleroma/web/rich_media/parser.ex | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0e2b54916..be0bf4f02 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -76,6 +76,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Resolving Peertube accounts with Webfinger
 - `blob:` urls not being allowed by connect-src CSP
 - Mastodon API: fix `GET /api/v1/notifications` not returning the full result set
+- Rich Media Previews for Twitter links
 
 ## [Unreleased (patch)]
 
diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex
index ef5ead2da..c8a767935 100644
--- a/lib/pleroma/web/rich_media/parser.ex
+++ b/lib/pleroma/web/rich_media/parser.ex
@@ -86,7 +86,10 @@ defmodule Pleroma.Web.RichMedia.Parser do
       end
 
     try do
-      {:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url, [], adapter: opts)
+      rich_media_agent = Pleroma.Application.user_agent() <> "; Bot"
+
+      {:ok, %Tesla.Env{body: html}} =
+        Pleroma.HTTP.get(url, [{"user-agent", rich_media_agent}], adapter: opts)
 
       html
       |> parse_html()