diff --git a/Classes/Network/Request.swift b/Classes/Network/Request.swift index a0ec8ed7..77c7a6d3 100644 --- a/Classes/Network/Request.swift +++ b/Classes/Network/Request.swift @@ -128,7 +128,7 @@ public class RequestBuilder: NSObject { public func setParam(key: String, value:String) -> Self { if var params = self.urlParams { - self.urlParams![key] = value + params[key] = value }else{ self.urlParams = [key:value] } diff --git a/Classes/Network/Result.swift b/Classes/Network/Result.swift index c0259d8b..512c70b2 100644 --- a/Classes/Network/Result.swift +++ b/Classes/Network/Result.swift @@ -9,7 +9,7 @@ import UIKit -public class Result { +public class Result: NSObject { public var data: T? = nil public var error: Error? = nil diff --git a/Classes/Network/SessionProvider.swift b/Classes/Network/SessionProvider.swift index 448f4589..6533e652 100644 --- a/Classes/Network/SessionProvider.swift +++ b/Classes/Network/SessionProvider.swift @@ -14,9 +14,6 @@ public protocol SessionProvider { var partnerId: Int64 { get } func loadKS(completion: @escaping (_ result :Result) -> Void) - - - } diff --git a/Classes/Player/AssetLoaderDelegate.swift b/Classes/Player/AssetLoaderDelegate.swift index 24dd0b18..968039dd 100644 --- a/Classes/Player/AssetLoaderDelegate.swift +++ b/Classes/Player/AssetLoaderDelegate.swift @@ -122,7 +122,7 @@ class AssetLoaderDelegate: NSObject { PKLog.debug("Got response in \(endTime-startTime) sec") let ckc = try self.parseServerResponse(data: data, error: error) callback(Result(data: ckc)) - } catch let e as Error { + } catch let e { callback(Result(error: e)) } }) diff --git a/Classes/Player/PlayerLoader.swift b/Classes/Player/PlayerLoader.swift index ec377848..a9b2f45e 100644 --- a/Classes/Player/PlayerLoader.swift +++ b/Classes/Player/PlayerLoader.swift @@ -59,6 +59,7 @@ class PlayerLoader: PlayerDecoratorBase { override func prepare(_ config: MediaConfig) { // update all loaded plugins with media config for (pluginName, loadedPlugin) in loadedPlugins { + PKLog.trace("Preparing plugin", pluginName) loadedPlugin.plugin.onLoad(mediaConfig: config) } super.prepare(config) diff --git a/Classes/Providers/OTT/Session/OTTSessionManager.swift b/Classes/Providers/OTT/Session/OTTSessionManager.swift index 607595c2..9b2801b1 100644 --- a/Classes/Providers/OTT/Session/OTTSessionManager.swift +++ b/Classes/Providers/OTT/Session/OTTSessionManager.swift @@ -99,7 +99,7 @@ public class OTTSessionManager: SessionProvider { } } - public func startAnonymouseSession(completion:@escaping (_ error:Error?)->Void) { + public func startAnonymousSession(completion:@escaping (_ error:Error?)->Void) { let loginRequestBuilder = OTTUserService.anonymousLogin(baseURL: self.serverURL, partnerId: self.partnerId) diff --git a/Classes/Providers/OVP/OVPMediaProvider.swift b/Classes/Providers/OVP/OVPMediaProvider.swift index 6f5cf651..e1babad9 100644 --- a/Classes/Providers/OVP/OVPMediaProvider.swift +++ b/Classes/Providers/OVP/OVPMediaProvider.swift @@ -38,6 +38,11 @@ public class OVPMediaProvider: MediaEntryProvider { public init(){} + + public init(_ sessionProvider: SessionProvider) { + self.set(sessionProvider: sessionProvider) + } + /** session provider - which resposible for the ks, prtner id, and base server url */ diff --git a/Classes/Providers/OVP/Session/OVPSessionManager.swift b/Classes/Providers/OVP/Session/OVPSessionManager.swift index d8c38ae6..72794a5c 100644 --- a/Classes/Providers/OVP/Session/OVPSessionManager.swift +++ b/Classes/Providers/OVP/Session/OVPSessionManager.swift @@ -41,12 +41,10 @@ public class OVPSessionManager: SessionProvider { private let defaultSessionExpiry = TimeInterval(24*60*60) - - public init(serverURL: String, version:String, partnerId: Int64, executor: RequestExecutor?) { - + public init(serverURL: String, partnerId: Int64, executor: RequestExecutor? = nil) { self.serverURL = serverURL self.partnerId = partnerId - self.version = version + self.version = "api_v3" self.fullServerPath = self.serverURL.appending("/\(self.version)") if let exe = executor { @@ -55,6 +53,11 @@ public class OVPSessionManager: SessionProvider { self.executor = USRExecutor.shared } } + + @available(*, deprecated, message: "Use init(serverURL:partnerId:executor:)") + public convenience init(serverURL: String, version:String, partnerId: Int64, executor: RequestExecutor?) { + self.init(serverURL: serverURL, partnerId: partnerId, executor: executor) + } public func loadKS(completion: @escaping (_ result :Result) -> Void){ if let ks = self.ks, self.tokenExpiration?.compare(Date()) == ComparisonResult.orderedDescending { @@ -72,7 +75,7 @@ public class OVPSessionManager: SessionProvider { } else{ - self.startAnonymouseSession(completion: { (e:Error?) in + self.startAnonymousSession(completion: { (e:Error?) in self.ensureKSAfterRefresh(e: e, completion: completion) }) } @@ -94,10 +97,7 @@ public class OVPSessionManager: SessionProvider { } - - - - public func startAnonymouseSession(completion:@escaping (_ error:Error?)->Void) -> Void { + public func startAnonymousSession(completion:@escaping (_ error:Error?)->Void) -> Void { let loginRequestBuilder = OVPSessionService.startWidgetSession(baseURL: self.fullServerPath, partnerId: self.partnerId)? diff --git a/Classes/Providers/OVP/SimpleOVPSessionProvider.swift b/Classes/Providers/OVP/SimpleOVPSessionProvider.swift new file mode 100644 index 00000000..f36d2c56 --- /dev/null +++ b/Classes/Providers/OVP/SimpleOVPSessionProvider.swift @@ -0,0 +1,43 @@ +// +// Created by Noam Tamim on 09/02/2017. +// +// + +import UIKit + +/** + A SessionProvider that just reflects its input parameters -- baseUrl, partnerId, ks. + Unlike the full OVPSessionManager, this class does not attempt to manage (create, renew, validate, clear) a session. + The application is expected to provide a valid KS, which it can update as required via the `ks` property. For some + use cases, the KS can be null (anonymous media playback, if allowed by access-control). Basic usage with a OVPMediaProvider: + + let mediaProvider = OVPMediaProvider(SimpleOVPSessionProvider(serverURL: "https://cdnapisec.kaltura.com", + partnerId: 1851571, + ks: applicationKS)) + mediaProvider.set(entryId: "0_pl5lbfo0").loadMedia { (entry) in + print("entry:", entry.data ?? "") + } + + */ +public class SimpleOVPSessionProvider: SessionProvider { + public let serverURL: String + public let partnerId: Int64 + public var ks: String? + + /** + Build an OVP SessionProvider with the specified parameters. + - Parameters: + - serverURL: Kaltura Server URL, such as `"https://cdnapisec.kaltura.com"`. + - partnerId: Kaltura partner id. + - ks: Kaltura Session token. + */ + public init(serverURL: String, partnerId: Int64, ks: String?) { + self.serverURL = serverURL + self.partnerId = partnerId + self.ks = ks + } + + public func loadKS(completion: @escaping (Result) -> Void) { + completion(Result(data: ks, error: nil)) + } +}