e27baeb065
Adds offline decryption key and uses it to decrypt content during offline playback Jira: VEX-5938 https://jira.tenkasu.net/browse/VEX-5938 - Update to accept scheme for key required to play offline playback - Uses provided scheme to intercept call from player and return the key - Fixes player item observer removal pattern ### Reviews - Major reviewer (domain expert): @armadilio3
104 lines
4.0 KiB
Swift
104 lines
4.0 KiB
Swift
enum RCTVideoError : Int {
|
|
case fromJSPart
|
|
case noLicenseServerURL
|
|
case licenseRequestNotOk
|
|
case noDataFromLicenseRequest
|
|
case noSPC
|
|
case noDataRequest
|
|
case noCertificateData
|
|
case noCertificateURL
|
|
case noFairplayDRM
|
|
case noDRMData
|
|
case invalidContentId
|
|
}
|
|
|
|
enum RCTVideoErrorHandler {
|
|
|
|
static let noDRMData = NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.noDRMData.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining DRM license.",
|
|
NSLocalizedFailureReasonErrorKey: "No drm object found.",
|
|
NSLocalizedRecoverySuggestionErrorKey: "Have you specified the 'drm' prop?"
|
|
])
|
|
|
|
static let noCertificateURL = NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.noCertificateURL.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining DRM License.",
|
|
NSLocalizedFailureReasonErrorKey: "No certificate URL has been found.",
|
|
NSLocalizedRecoverySuggestionErrorKey: "Did you specified the prop certificateUrl?"
|
|
])
|
|
|
|
static let noCertificateData = NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.noCertificateData.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining DRM license.",
|
|
NSLocalizedFailureReasonErrorKey: "No certificate data obtained from the specificied url.",
|
|
NSLocalizedRecoverySuggestionErrorKey: "Have you specified a valid 'certificateUrl'?"
|
|
])
|
|
|
|
static let noSPC = NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.noSPC.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining license.",
|
|
NSLocalizedFailureReasonErrorKey: "No spc received.",
|
|
NSLocalizedRecoverySuggestionErrorKey: "Check your DRM config."
|
|
])
|
|
|
|
static let noLicenseServerURL = NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.noLicenseServerURL.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining DRM License.",
|
|
NSLocalizedFailureReasonErrorKey: "No license server URL has been found.",
|
|
NSLocalizedRecoverySuggestionErrorKey: "Did you specified the prop licenseServer?"
|
|
])
|
|
|
|
static let noDataFromLicenseRequest = NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.noDataFromLicenseRequest.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining DRM license.",
|
|
NSLocalizedFailureReasonErrorKey: "No data received from the license server.",
|
|
NSLocalizedRecoverySuggestionErrorKey: "Is the licenseServer ok?"
|
|
])
|
|
|
|
static func licenseRequestNotOk(_ statusCode: Int) -> NSError {
|
|
return NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.licenseRequestNotOk.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining license.",
|
|
NSLocalizedFailureReasonErrorKey: String(
|
|
format:"License server responded with status code %li",
|
|
(statusCode)
|
|
),
|
|
NSLocalizedRecoverySuggestionErrorKey: "Did you send the correct data to the license Server? Is the server ok?"
|
|
])
|
|
}
|
|
|
|
static func fromJSPart(_ error: String) -> NSError {
|
|
return NSError(domain: "RCTVideo",
|
|
code: RCTVideoError.fromJSPart.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: error,
|
|
NSLocalizedFailureReasonErrorKey: error,
|
|
NSLocalizedRecoverySuggestionErrorKey: error
|
|
])
|
|
}
|
|
|
|
static let invalidContentId = NSError(
|
|
domain: "RCTVideo",
|
|
code: RCTVideoError.invalidContentId.rawValue,
|
|
userInfo: [
|
|
NSLocalizedDescriptionKey: "Error obtaining DRM license.",
|
|
NSLocalizedFailureReasonErrorKey: "No valide content Id received",
|
|
NSLocalizedRecoverySuggestionErrorKey: "Is the contentId and url ok?"
|
|
])
|
|
}
|