feat: support Miruro provider tracks, proxies, and native embeds
This commit is contained in:
@@ -195,10 +195,13 @@ public struct PlayerConfiguration: Equatable, Sendable {
|
||||
private static func provider(_ name: String, in container: KeyedDecodingContainer<SettingKey>) throws -> String? {
|
||||
let value = try container.decodeIfPresent(String.self, forKey: SettingKey(name))
|
||||
if let value {
|
||||
guard value.utf8.count <= 128, value.utf8.allSatisfy({
|
||||
(65...90).contains($0) || (97...122).contains($0) || (48...57).contains($0) || $0 == 95 || $0 == 45
|
||||
}) else {
|
||||
throw ConfigurationError(message: "miruro.\(name): Expected an empty string (Auto) or up to 128 ASCII letters, digits, underscores or hyphens.")
|
||||
let parts = value.split(separator: ":", omittingEmptySubsequences: false)
|
||||
let provider = parts.first ?? ""
|
||||
guard value.isEmpty || ((parts.count == 1 || (parts.count == 2 && ["ssub", "sub", "dub"].contains(String(parts[1])))) &&
|
||||
!provider.isEmpty && provider.utf8.count <= 128 && provider.utf8.allSatisfy({
|
||||
(65...90).contains($0) || (97...122).contains($0) || (48...57).contains($0) || $0 == 95 || $0 == 45
|
||||
})) else {
|
||||
throw ConfigurationError(message: "miruro.\(name): Expected an empty string (Auto), a provider name (up to 128 ASCII letters, digits, underscores or hyphens), or provider:ssub, provider:sub or provider:dub.")
|
||||
}
|
||||
}
|
||||
return value
|
||||
|
||||
Reference in New Issue
Block a user