remove 2471 pr

This commit is contained in:
Émilien Devos
2021-11-07 20:37:10 +00:00
committed by GitHub
parent 42c3a215da
commit 2b021c3a8d
-514
View File
@@ -1,514 +0,0 @@
From 60fa552469b5c1d39fd78a3e6a7f5aa133bd3fc7 Mon Sep 17 00:00:00 2001
From: Samantaz Fox <coding@samantaz.fr>
Date: Thu, 7 Oct 2021 13:53:55 +0200
Subject: [PATCH 1/7] Fix an infinite recursion caused by #2228
Changes in the aforementioned PR lead to change the behavior
of some old code.
The data type of the parameters aren't explicit enough, which
makes the compiler use the wrong method because of type infering.
---
src/invidious/helpers/serialized_yt_data.cr | 66 ++++++++++-----------
1 file changed, 31 insertions(+), 35 deletions(-)
diff --git a/src/invidious/helpers/serialized_yt_data.cr b/src/invidious/helpers/serialized_yt_data.cr
index 1ba3f20ed..0cac7c49e 100644
--- a/src/invidious/helpers/serialized_yt_data.cr
+++ b/src/invidious/helpers/serialized_yt_data.cr
@@ -58,17 +58,13 @@ struct SearchVideo
end
end
- def to_xml(auto_generated, query_params, xml : XML::Builder | Nil = nil)
- if xml
- to_xml(HOST_URL, auto_generated, query_params, xml)
- else
- XML.build do |xml|
- to_xml(HOST_URL, auto_generated, query_params, xml)
- end
+ def to_xml(auto_generated, query_params, _xml : Nil)
+ XML.build do |xml|
+ to_xml(auto_generated, query_params, xml)
end
end
- def to_json(locale : Hash(String, JSON::Any), json : JSON::Builder)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
json.object do
json.field "type", "video"
json.field "title", self.title
@@ -99,16 +95,16 @@ struct SearchVideo
end
end
- def to_json(locale, json : JSON::Builder | Nil = nil)
- if json
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil = nil)
+ JSON.build do |json|
to_json(locale, json)
- else
- JSON.build do |json|
- to_json(locale, json)
- end
end
end
+ def to_json(json : JSON::Builder)
+ to_json(nil, json)
+ end
+
def is_upcoming
premiere_timestamp ? true : false
end
@@ -133,7 +129,7 @@ struct SearchPlaylist
property videos : Array(SearchPlaylistVideo)
property thumbnail : String?
- def to_json(locale, json : JSON::Builder)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
json.object do
json.field "type", "playlist"
json.field "title", self.title
@@ -163,15 +159,15 @@ struct SearchPlaylist
end
end
- def to_json(locale, json : JSON::Builder | Nil = nil)
- if json
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil = nil)
+ JSON.build do |json|
to_json(locale, json)
- else
- JSON.build do |json|
- to_json(locale, json)
- end
end
end
+
+ def to_json(json : JSON::Builder)
+ to_json(nil, json)
+ end
end
struct SearchChannel
@@ -185,7 +181,7 @@ struct SearchChannel
property description_html : String
property auto_generated : Bool
- def to_json(locale, json : JSON::Builder)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
json.object do
json.field "type", "channel"
json.field "author", self.author
@@ -215,15 +211,15 @@ struct SearchChannel
end
end
- def to_json(locale, json : JSON::Builder | Nil = nil)
- if json
+ def to_json(locale, _json : Nil = nil)
+ JSON.build do |json|
to_json(locale, json)
- else
- JSON.build do |json|
- to_json(locale, json)
- end
end
end
+
+ def to_json(json : JSON::Builder)
+ to_json(nil, json)
+ end
end
class Category
@@ -235,7 +231,7 @@ class Category
property description_html : String
property badges : Array(Tuple(String, String))?
- def to_json(locale, json : JSON::Builder)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
json.object do
json.field "type", "category"
json.field "title", self.title
@@ -249,15 +245,15 @@ class Category
end
end
- def to_json(locale, json : JSON::Builder | Nil = nil)
- if json
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil = nil)
+ JSON.build do |json|
to_json(locale, json)
- else
- JSON.build do |json|
- to_json(locale, json)
- end
end
end
+
+ def to_json(json : JSON::Builder)
+ to_json(nil, json)
+ end
end
alias SearchItem = SearchVideo | SearchChannel | SearchPlaylist | Category
From f65b628bf36d51a46d7d4584004ccc6764c6669e Mon Sep 17 00:00:00 2001
From: Samantaz Fox <coding@samantaz.fr>
Date: Thu, 7 Oct 2021 22:50:32 +0200
Subject: [PATCH 2/7] serialized_yt_data: Remove default nil value in to_json
this will ensure that two parameters are passed and that it
doesn't collide with 'to_json(builder)'
---
src/invidious/helpers/serialized_yt_data.cr | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/invidious/helpers/serialized_yt_data.cr b/src/invidious/helpers/serialized_yt_data.cr
index 0cac7c49e..bc8fc946b 100644
--- a/src/invidious/helpers/serialized_yt_data.cr
+++ b/src/invidious/helpers/serialized_yt_data.cr
@@ -95,7 +95,7 @@ struct SearchVideo
end
end
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil = nil)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
@@ -159,7 +159,7 @@ struct SearchPlaylist
end
end
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil = nil)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
@@ -211,7 +211,7 @@ struct SearchChannel
end
end
- def to_json(locale, _json : Nil = nil)
+ def to_json(locale, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
@@ -245,7 +245,7 @@ class Category
end
end
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil = nil)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
From 1cb715ac9f102c74b6611dae703c5a45e7cae94a Mon Sep 17 00:00:00 2001
From: Samantaz Fox <coding@samantaz.fr>
Date: Thu, 7 Oct 2021 22:53:00 +0200
Subject: [PATCH 3/7] serialized_yt_data: force datatype of 'locale'
---
src/invidious/helpers/serialized_yt_data.cr | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/invidious/helpers/serialized_yt_data.cr b/src/invidious/helpers/serialized_yt_data.cr
index bc8fc946b..d4f5da872 100644
--- a/src/invidious/helpers/serialized_yt_data.cr
+++ b/src/invidious/helpers/serialized_yt_data.cr
@@ -211,7 +211,7 @@ struct SearchChannel
end
end
- def to_json(locale, _json : Nil)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
From 33780f1995d23291b73792caad6cb2ad56952f4e Mon Sep 17 00:00:00 2001
From: Samantaz Fox <coding@samantaz.fr>
Date: Fri, 29 Oct 2021 14:53:06 +0200
Subject: [PATCH 4/7] Also fix 'to_json' in struct Video
---
src/invidious/helpers/helpers.cr | 4 ++--
src/invidious/routes/api/v1/videos.cr | 2 +-
src/invidious/videos.cr | 17 ++++++++---------
3 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr
index 9c053d74e..c3b356a9a 100644
--- a/src/invidious/helpers/helpers.cr
+++ b/src/invidious/helpers/helpers.cr
@@ -206,7 +206,7 @@ def create_notification_stream(env, topics, connection_channel)
video = get_video(video_id, PG_DB)
video.published = published
- response = JSON.parse(video.to_json(locale))
+ response = JSON.parse(video.to_json(locale, nil))
if fields_text = env.params.query["fields"]?
begin
@@ -282,7 +282,7 @@ def create_notification_stream(env, topics, connection_channel)
video = get_video(video_id, PG_DB)
video.published = Time.unix(published)
- response = JSON.parse(video.to_json(locale))
+ response = JSON.parse(video.to_json(locale, nil))
if fields_text = env.params.query["fields"]?
begin
diff --git a/src/invidious/routes/api/v1/videos.cr b/src/invidious/routes/api/v1/videos.cr
index d483bca6b..1edee29c2 100644
--- a/src/invidious/routes/api/v1/videos.cr
+++ b/src/invidious/routes/api/v1/videos.cr
@@ -16,7 +16,7 @@ module Invidious::Routes::API::V1::Videos
return error_json(500, ex)
end
- video.to_json(locale)
+ video.to_json(locale, nil)
end
def self.captions(env)
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index d38a66d8f..d3e5800cc 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -275,7 +275,7 @@ struct Video
end
end
- def to_json(locale : Hash(String, JSON::Any), json : JSON::Builder)
+ def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
json.object do
json.field "type", "video"
@@ -474,14 +474,13 @@ struct Video
end
end
- def to_json(locale, json : JSON::Builder | Nil = nil)
- if json
- to_json(locale, json)
- else
- JSON.build do |json|
- to_json(locale, json)
- end
- end
+ # TODO: remove the locale and follow the crystal convention
+ def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
+ JSON.build { |json| to_json(locale, json) }
+ end
+
+ def to_json(json : JSON::Builder | Nil = nil)
+ to_json(nil, json)
end
def title
From 0ec94405ce2b9f421dc85e2d5941e415e9d97f3d Mon Sep 17 00:00:00 2001
From: Samantaz Fox <coding@samantaz.fr>
Date: Fri, 29 Oct 2021 14:53:57 +0200
Subject: [PATCH 5/7] Add TODO comments to other places
---
src/invidious/helpers/serialized_yt_data.cr | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/invidious/helpers/serialized_yt_data.cr b/src/invidious/helpers/serialized_yt_data.cr
index d4f5da872..f92b7b895 100644
--- a/src/invidious/helpers/serialized_yt_data.cr
+++ b/src/invidious/helpers/serialized_yt_data.cr
@@ -95,6 +95,7 @@ struct SearchVideo
end
end
+ # TODO: remove the locale and follow the crystal convention
def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
@@ -159,6 +160,7 @@ struct SearchPlaylist
end
end
+ # TODO: remove the locale and follow the crystal convention
def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
@@ -211,6 +213,7 @@ struct SearchChannel
end
end
+ # TODO: remove the locale and follow the crystal convention
def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
@@ -245,6 +248,7 @@ class Category
end
end
+ # TODO: remove the locale and follow the crystal convention
def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
JSON.build do |json|
to_json(locale, json)
From 86f75758a76427dd7564ef17bc6a33b6d7ce2e62 Mon Sep 17 00:00:00 2001
From: Samantaz Fox <coding@samantaz.fr>
Date: Fri, 29 Oct 2021 14:59:53 +0200
Subject: [PATCH 6/7] Fix 'to_json' in struct PlaylistVideo
---
src/invidious/playlists.cr | 16 +++++-----------
src/invidious/routes/api/v1/authenticated.cr | 5 ++++-
2 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr
index 443d19d72..e25180c10 100644
--- a/src/invidious/playlists.cr
+++ b/src/invidious/playlists.cr
@@ -57,7 +57,7 @@ struct PlaylistVideo
end
end
- def to_json(locale, json : JSON::Builder, index : Int32?)
+ def to_json(json : JSON::Builder, index : Int32? = nil)
json.object do
json.field "title", self.title
json.field "videoId", self.id
@@ -81,14 +81,8 @@ struct PlaylistVideo
end
end
- def to_json(locale, json : JSON::Builder? = nil, index : Int32? = nil)
- if json
- to_json(locale, json, index: index)
- else
- JSON.build do |json|
- to_json(locale, json, index: index)
- end
- end
+ def to_json(_json : Nil, index : Int32? = nil)
+ JSON.build { |json| to_json(json, index: index) }
end
end
@@ -144,7 +138,7 @@ struct Playlist
json.array do
videos = get_playlist_videos(PG_DB, self, offset: offset, locale: locale, video_id: video_id)
videos.each do |video|
- video.to_json(locale, json)
+ video.to_json(json)
end
end
end
@@ -224,7 +218,7 @@ struct InvidiousPlaylist
videos = get_playlist_videos(PG_DB, self, offset: offset, locale: locale, video_id: video_id)
videos.each_with_index do |video, index|
- video.to_json(locale, json, offset + index)
+ video.to_json(json, offset + index)
end
end
end
diff --git a/src/invidious/routes/api/v1/authenticated.cr b/src/invidious/routes/api/v1/authenticated.cr
index 7950b3027..cdd9e2f6c 100644
--- a/src/invidious/routes/api/v1/authenticated.cr
+++ b/src/invidious/routes/api/v1/authenticated.cr
@@ -274,7 +274,10 @@ module Invidious::Routes::API::V1::Authenticated
env.response.headers["Location"] = "#{HOST_URL}/api/v1/auth/playlists/#{plid}/videos/#{playlist_video.index.to_u64.to_s(16).upcase}"
env.response.status_code = 201
- playlist_video.to_json(locale, index: playlist.index.size)
+
+ JSON.build do |json|
+ playlist_video.to_json(json, index: playlist.index.size)
+ end
end
def self.delete_video_in_playlist(env)
From 6cf0ff6b49ee6b189eb5a308089dc86d42f79019 Mon Sep 17 00:00:00 2001
From: Samantaz Fox <coding@samantaz.fr>
Date: Fri, 29 Oct 2021 16:01:52 +0200
Subject: [PATCH 7/7] Remove useless auto_generated param from
PlaylistVideo#to_xml
given the variables available in this function's context, 'author' and 'ucid'
provide the same data 'self.author' and 'self.ucid', respectively.
Given that fact, the variable `auto_generated` has no impact on the logic of
this function, and hence can be safely removed. this greatly simplifies the
code and makes it perfectly compatible with crystal's calling convention for
'#to_xml' methods.
---
src/invidious/playlists.cr | 21 +++++----------------
src/invidious/routes/feeds.cr | 4 +---
2 files changed, 6 insertions(+), 19 deletions(-)
diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr
index e25180c10..f37667b5f 100644
--- a/src/invidious/playlists.cr
+++ b/src/invidious/playlists.cr
@@ -11,7 +11,7 @@ struct PlaylistVideo
property index : Int64
property live_now : Bool
- def to_xml(auto_generated, xml : XML::Builder)
+ def to_xml(xml : XML::Builder)
xml.element("entry") do
xml.element("id") { xml.text "yt:video:#{self.id}" }
xml.element("yt:videoId") { xml.text self.id }
@@ -20,13 +20,8 @@ struct PlaylistVideo
xml.element("link", rel: "alternate", href: "#{HOST_URL}/watch?v=#{self.id}")
xml.element("author") do
- if auto_generated
- xml.element("name") { xml.text self.author }
- xml.element("uri") { xml.text "#{HOST_URL}/channel/#{self.ucid}" }
- else
- xml.element("name") { xml.text author }
- xml.element("uri") { xml.text "#{HOST_URL}/channel/#{ucid}" }
- end
+ xml.element("name") { xml.text self.author }
+ xml.element("uri") { xml.text "#{HOST_URL}/channel/#{self.ucid}" }
end
xml.element("content", type: "xhtml") do
@@ -47,14 +42,8 @@ struct PlaylistVideo
end
end
- def to_xml(auto_generated, xml : XML::Builder? = nil)
- if xml
- to_xml(auto_generated, xml)
- else
- XML.build do |xml|
- to_xml(auto_generated, xml)
- end
- end
+ def to_xml(_xml : Nil = nil)
+ XML.build { |xml| to_xml(xml) }
end
def to_json(json : JSON::Builder, index : Int32? = nil)
diff --git a/src/invidious/routes/feeds.cr b/src/invidious/routes/feeds.cr
index 40c41dc1a..f4a8467b9 100644
--- a/src/invidious/routes/feeds.cr
+++ b/src/invidious/routes/feeds.cr
@@ -281,9 +281,7 @@ module Invidious::Routes::Feeds
xml.element("name") { xml.text playlist.author }
end
- videos.each do |video|
- video.to_xml(false, xml)
- end
+ videos.each &.to_xml(xml)
end
end
else