From 464eaa0409199acdfcc702b7d5f28fdf0c8a6da7 Mon Sep 17 00:00:00 2001
From: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Date: Fri, 31 May 2024 11:39:09 +0200
Subject: [PATCH] Adding a base class of oembedresponse, so we can handle
string values for dimentions (#16514)
---
.../Media/EmbedProviders/OEmbedResponse.cs | 62 +----------------
.../EmbedProviders/OEmbedResponseBase.cs | 68 +++++++++++++++++++
.../OEmbedResponseWithStringDimensions.cs | 9 +++
3 files changed, 79 insertions(+), 60 deletions(-)
create mode 100644 src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseBase.cs
create mode 100644 src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseWithStringDimensions.cs
diff --git a/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponse.cs b/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponse.cs
index 370d2609c7..61c6b2d13f 100644
--- a/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponse.cs
+++ b/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponse.cs
@@ -1,68 +1,10 @@
-using System.Net;
using System.Runtime.Serialization;
namespace Umbraco.Cms.Core.Media.EmbedProviders;
///
-/// Wrapper class for OEmbed response
+/// Wrapper class for OEmbed response.
///
[DataContract]
-public class OEmbedResponse
-{
- [DataMember(Name = "type")]
- public string? Type { get; set; }
+public class OEmbedResponse : OEmbedResponseBase;
- [DataMember(Name = "version")]
- public string? Version { get; set; }
-
- [DataMember(Name = "title")]
- public string? Title { get; set; }
-
- [DataMember(Name = "author_name")]
- public string? AuthorName { get; set; }
-
- [DataMember(Name = "author_url")]
- public string? AuthorUrl { get; set; }
-
- [DataMember(Name = "provider_name")]
- public string? ProviderName { get; set; }
-
- [DataMember(Name = "provider_url")]
- public string? ProviderUrl { get; set; }
-
- [DataMember(Name = "thumbnail_url")]
- public string? ThumbnailUrl { get; set; }
-
- [DataMember(Name = "thumbnail_height")]
- public double? ThumbnailHeight { get; set; }
-
- [DataMember(Name = "thumbnail_width")]
- public double? ThumbnailWidth { get; set; }
-
- [DataMember(Name = "html")]
- public string? Html { get; set; }
-
- [DataMember(Name = "url")]
- public string? Url { get; set; }
-
- [DataMember(Name = "height")]
- public double? Height { get; set; }
-
- [DataMember(Name = "width")]
- public double? Width { get; set; }
-
- ///
- /// Gets the HTML.
- ///
- /// The response HTML
- public string GetHtml()
- {
- if (Type == "photo")
- {
- return "
";
- }
-
- return string.IsNullOrEmpty(Html) == false ? Html : string.Empty;
- }
-}
diff --git a/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseBase.cs b/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseBase.cs
new file mode 100644
index 0000000000..57e4c878c7
--- /dev/null
+++ b/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseBase.cs
@@ -0,0 +1,68 @@
+using System.Net;
+using System.Runtime.Serialization;
+
+namespace Umbraco.Cms.Core.Media.EmbedProviders;
+
+///
+/// Base class for OEmbed response.
+///
+[DataContract]
+public abstract class OEmbedResponseBase
+{
+ [DataMember(Name = "type")]
+ public string? Type { get; set; }
+
+ [DataMember(Name = "version")]
+ public string? Version { get; set; }
+
+ [DataMember(Name = "title")]
+ public string? Title { get; set; }
+
+ [DataMember(Name = "author_name")]
+ public string? AuthorName { get; set; }
+
+ [DataMember(Name = "author_url")]
+ public string? AuthorUrl { get; set; }
+
+ [DataMember(Name = "provider_name")]
+ public string? ProviderName { get; set; }
+
+ [DataMember(Name = "provider_url")]
+ public string? ProviderUrl { get; set; }
+
+ [DataMember(Name = "thumbnail_url")]
+ public string? ThumbnailUrl { get; set; }
+
+ [DataMember(Name = "thumbnail_height")]
+ public T? ThumbnailHeight { get; set; }
+
+ [DataMember(Name = "thumbnail_width")]
+ public T? ThumbnailWidth { get; set; }
+
+ [DataMember(Name = "html")]
+ public string? Html { get; set; }
+
+ [DataMember(Name = "url")]
+ public string? Url { get; set; }
+
+ [DataMember(Name = "height")]
+ public T? Height { get; set; }
+
+ [DataMember(Name = "width")]
+ public T? Width { get; set; }
+
+ ///
+ /// Gets the HTML.
+ ///
+ /// The response HTML
+ public string GetHtml()
+ {
+ if (Type == "photo")
+ {
+ return "
";
+ }
+
+ return string.IsNullOrEmpty(Html) == false ? Html : string.Empty;
+ }
+}
diff --git a/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseWithStringDimensions.cs b/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseWithStringDimensions.cs
new file mode 100644
index 0000000000..22a92dc6c3
--- /dev/null
+++ b/src/Umbraco.Core/Media/EmbedProviders/OEmbedResponseWithStringDimensions.cs
@@ -0,0 +1,9 @@
+using System.Runtime.Serialization;
+
+namespace Umbraco.Cms.Core.Media.EmbedProviders;
+
+///
+/// Wrapper class for OEmbed response with width and height as string values.
+///
+[DataContract]
+public class OEmbedResponseWithStringDimensions : OEmbedResponseBase;