diff --git a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/certificate_generator.rb b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/certificate_generator.rb
index f36c264720e..5308f6aa72b 100644
--- a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/certificate_generator.rb
+++ b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/certificate_generator.rb
@@ -464,7 +464,7 @@ module DiscourseNarrativeBot
-
+
#{name}
@@ -530,7 +530,7 @@ module DiscourseNarrativeBot
-
+
#{@discobot_user.username}
@@ -568,7 +568,7 @@ module DiscourseNarrativeBot
<<~URL
-
+
URL
rescue URI::InvalidURIError
@@ -576,6 +576,20 @@ module DiscourseNarrativeBot
end
end
+ def base64_image_link(url)
+ if image = fetch_image(url)
+ "xlink:href=\"data:image/png;base64,#{Base64.strict_encode64(image)}\""
+ else
+ ""
+ end
+ end
+
+ def fetch_image(url)
+ URI(url).open('rb', redirect: true, allow_redirections: :all).read
+ rescue OpenURI::HTTPError
+ # Ignore if fetching image returns a non 200 response
+ end
+
def avatar_url
UrlHelper.absolute(Discourse.base_uri + @user.avatar_template.gsub('{size}', '250'))
end