summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-12-19 22:37:48 -0500
committerChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-12-26 22:05:09 -0500
commit7da4a7f72b0e328f72aff884605a21c4ffe7cb04 (patch)
treead00978003923686fedb45b4e67c07810f057a12 /src
parentb344d98c25185ca4e163eeda128b9fc68ff865b6 (diff)
downloadinvidious-7da4a7f72b0e328f72aff884605a21c4ffe7cb04.tar.gz
invidious-7da4a7f72b0e328f72aff884605a21c4ffe7cb04.tar.bz2
invidious-7da4a7f72b0e328f72aff884605a21c4ffe7cb04.zip
add null safety to clip parsing
Diffstat (limited to 'src')
-rw-r--r--src/invidious/routes/watch.cr4
-rw-r--r--src/invidious/videos/clip.cr6
2 files changed, 6 insertions, 4 deletions
diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr
index 1cba86f6..aabe8dfc 100644
--- a/src/invidious/routes/watch.cr
+++ b/src/invidious/routes/watch.cr
@@ -277,8 +277,8 @@ module Invidious::Routes::Watch
if video_id = response.dig?("endpoint", "watchEndpoint", "videoId")
if params = response.dig?("endpoint", "watchEndpoint", "params").try &.as_s
start_time, end_time, _ = parse_clip_parameters(params)
- env.params.query["start"] = start_time.to_s
- env.params.query["end"] = end_time.to_s
+ env.params.query["start"] = start_time.to_s if start_time != nil
+ env.params.query["end"] = end_time.to_s if end_time != nil
end
return env.redirect "/watch?v=#{video_id}&#{env.params.query}"
diff --git a/src/invidious/videos/clip.cr b/src/invidious/videos/clip.cr
index 47f108a3..29c57182 100644
--- a/src/invidious/videos/clip.cr
+++ b/src/invidious/videos/clip.cr
@@ -1,7 +1,7 @@
require "json"
# returns start_time, end_time and clip_title
-def parse_clip_parameters(params) : {Float64, Float64, String}
+def parse_clip_parameters(params) : {Float64?, Float64?, String?}
decoded_protobuf = params.try { |i| URI.decode_www_form(i) }
.try { |i| Base64.decode(i) }
.try { |i| IO::Memory.new(i) }
@@ -9,12 +9,14 @@ def parse_clip_parameters(params) : {Float64, Float64, String}
start_time = decoded_protobuf
.try(&.["50:0:embedded"]["2:1:varint"].as_i64)
+ .try { |i| i/1000 }
end_time = decoded_protobuf
.try(&.["50:0:embedded"]["3:2:varint"].as_i64)
+ .try { |i| i/1000 }
clip_title = decoded_protobuf
.try(&.["50:0:embedded"]["4:3:string"].as_s)
- return (start_time / 1000), (end_time / 1000), clip_title
+ return start_time, end_time, clip_title
end