[HTML] Prefer proxy URLs for resolving embed media

Closes #590
pull/607/head
Tyrrrz 3 years ago
parent cb32cee5f5
commit cbe4bc593c

@ -12,11 +12,14 @@ namespace DiscordChatExporter.Core.Discord.Data
public string? IconUrl { get; }
public EmbedAuthor(string? name, string? url, string? iconUrl)
public string? IconProxyUrl { get; }
public EmbedAuthor(string? name, string? url, string? iconUrl, string? iconProxyUrl)
{
Name = name;
Url = url;
IconUrl = iconUrl;
IconProxyUrl = iconProxyUrl;
}
public override string ToString() => Name ?? "<unnamed author>";
@ -29,8 +32,9 @@ namespace DiscordChatExporter.Core.Discord.Data
var name = json.GetPropertyOrNull("name")?.GetString();
var url = json.GetPropertyOrNull("url")?.GetString();
var iconUrl = json.GetPropertyOrNull("icon_url")?.GetString();
var iconProxyUrl = json.GetPropertyOrNull("proxy_icon_url")?.GetString();
return new EmbedAuthor(name, url, iconUrl);
return new EmbedAuthor(name, url, iconUrl, iconProxyUrl);
}
}
}

@ -10,10 +10,13 @@ namespace DiscordChatExporter.Core.Discord.Data
public string? IconUrl { get; }
public EmbedFooter(string text, string? iconUrl)
public string? IconProxyUrl { get; }
public EmbedFooter(string text, string? iconUrl, string? iconProxyUrl)
{
Text = text;
IconUrl = iconUrl;
IconProxyUrl = iconProxyUrl;
}
public override string ToString() => Text;
@ -25,8 +28,9 @@ namespace DiscordChatExporter.Core.Discord.Data
{
var text = json.GetProperty("text").GetString();
var iconUrl = json.GetPropertyOrNull("icon_url")?.GetString();
var iconProxyUrl = json.GetPropertyOrNull("proxy_icon_url")?.GetString();
return new EmbedFooter(text, iconUrl);
return new EmbedFooter(text, iconUrl, iconProxyUrl);
}
}
}

@ -8,13 +8,16 @@ namespace DiscordChatExporter.Core.Discord.Data
{
public string? Url { get; }
public string? ProxyUrl { get; }
public int? Width { get; }
public int? Height { get; }
public EmbedImage(string? url, int? width, int? height)
public EmbedImage(string? url, string? proxyUrl, int? width, int? height)
{
Url = url;
ProxyUrl = proxyUrl;
Height = height;
Width = width;
}
@ -25,10 +28,11 @@ namespace DiscordChatExporter.Core.Discord.Data
public static EmbedImage Parse(JsonElement json)
{
var url = json.GetPropertyOrNull("url")?.GetString();
var proxyUrl = json.GetPropertyOrNull("proxy_url")?.GetString();
var width = json.GetPropertyOrNull("width")?.GetInt32();
var height = json.GetPropertyOrNull("height")?.GetInt32();
return new EmbedImage(url, width, height);
return new EmbedImage(url, proxyUrl, width, height);
}
}
}

@ -180,7 +180,7 @@
<div class="chatlog__embed-author">
@if (!string.IsNullOrWhiteSpace(embed.Author.IconUrl))
{
<img class="chatlog__embed-author-icon" src="@await ResolveUrlAsync(embed.Author.IconUrl)" alt="Author icon">
<img class="chatlog__embed-author-icon" src="@await ResolveUrlAsync(embed.Author.IconProxyUrl ?? embed.Author.IconUrl)" alt="Author icon">
}
@if (!string.IsNullOrWhiteSpace(embed.Author.Name))
@ -249,21 +249,21 @@
}
</div>
@if (embed.Thumbnail is not null)
@if (embed.Thumbnail is not null && !string.IsNullOrWhiteSpace(embed.Thumbnail.Url))
{
<div class="chatlog__embed-thumbnail-container">
<a class="chatlog__embed-thumbnail-link" href="@await ResolveUrlAsync(embed.Thumbnail.Url)">
<img class="chatlog__embed-thumbnail" src="@await ResolveUrlAsync(embed.Thumbnail.Url)" alt="Thumbnail">
<a class="chatlog__embed-thumbnail-link" href="@await ResolveUrlAsync(embed.Thumbnail.ProxyUrl ?? embed.Thumbnail.Url)">
<img class="chatlog__embed-thumbnail" src="@await ResolveUrlAsync(embed.Thumbnail.ProxyUrl ?? embed.Thumbnail.Url)" alt="Thumbnail">
</a>
</div>
}
</div>
@if (embed.Image is not null)
@if (embed.Image is not null && !string.IsNullOrWhiteSpace(embed.Image.Url))
{
<div class="chatlog__embed-image-container">
<a class="chatlog__embed-image-link" href="@await ResolveUrlAsync(embed.Image.Url)">
<img class="chatlog__embed-image" src="@await ResolveUrlAsync(embed.Image.Url)" alt="Image">
<a class="chatlog__embed-image-link" href="@await ResolveUrlAsync(embed.Image.ProxyUrl ?? embed.Image.Url)">
<img class="chatlog__embed-image" src="@await ResolveUrlAsync(embed.Image.ProxyUrl ?? embed.Image.Url)" alt="Image">
</a>
</div>
}
@ -273,7 +273,7 @@
<div class="chatlog__embed-footer">
@if (!string.IsNullOrWhiteSpace(embed.Footer?.IconUrl))
{
<img class="chatlog__embed-footer-icon" src="@await ResolveUrlAsync(embed.Footer.IconUrl)" alt="Footer icon">
<img class="chatlog__embed-footer-icon" src="@await ResolveUrlAsync(embed.Footer.IconProxyUrl ?? embed.Footer.IconUrl)" alt="Footer icon">
}
<span class="chatlog__embed-footer-text">

Loading…
Cancel
Save