invidious support for basic auth urls

This adds user, password and port to the proxy and thumbnail url, if they exist.

fixes #614 & #731

Signed-off-by: Toni Förster <toni.foerster@gmail.com>
This commit is contained in:
Toni Förster 2024-08-28 15:42:35 +02:00
parent bde9aade11
commit ed3d9a7d7c
No known key found for this signature in database
GPG Key ID: 292F3E5086C83FC7

View File

@ -445,6 +445,9 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
urlComponents.scheme = instanceURLComponents.scheme urlComponents.scheme = instanceURLComponents.scheme
urlComponents.host = instanceURLComponents.host urlComponents.host = instanceURLComponents.host
urlComponents.user = instanceURLComponents.user
urlComponents.password = instanceURLComponents.password
urlComponents.port = instanceURLComponents.port
guard let url = urlComponents.url else { guard let url = urlComponents.url else {
return nil return nil
@ -563,13 +566,20 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
return nil return nil
} }
// some of instances are not configured properly and return thumbnails links // Some instances are not configured properly and return thumbnail links
// with incorrect scheme // with an incorrect scheme or a missing port.
components.scheme = accountUrlComponents.scheme components.scheme = accountUrlComponents.scheme
components.port = accountUrlComponents.port
// If basic HTTP authentication is used,
// the username and password need to be prepended to the URL.
components.user = accountUrlComponents.user
components.password = accountUrlComponents.password
guard let thumbnailUrl = components.url else { guard let thumbnailUrl = components.url else {
return nil return nil
} }
print("Final thumbnail URL: \(thumbnailUrl)")
return Thumbnail(url: thumbnailUrl, quality: .init(rawValue: quality)!) return Thumbnail(url: thumbnailUrl, quality: .init(rawValue: quality)!)
} }