Created
March 6, 2020 09:11
-
-
Save bryanrmq/0c7e2f1ec1383f16b28ac67f5a8b8961 to your computer and use it in GitHub Desktop.
Spectator library
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
@objc public class Spectator: NSObject { | |
/// Singleton instance | |
@objc static let shared: Spectator = Spectator() | |
// MARK: - Properties | |
private var providers: [SpectatorProvider] = [] | |
private var logLevel: SpectatorLogLevel = .debug | |
private var isFireEventEnabled: Bool = true | |
var config: SpectatorConfigurator? { | |
didSet { | |
guard let config = config else { return } | |
providers = config.providers | |
logLevel = config.logLevel | |
isFireEventEnabled = config.isFireEventEnabled | |
} | |
} | |
// MARK: - Init | |
private override init() {} | |
// MARK: - Methods | |
static func fire(_ event: SpectatorEventType, withParameters parameters: [String: String]? = nil) { | |
for provider in Spectator.shared.providers { | |
log(event, parameters, provider) | |
if event.allowedProviders.contains(provider.providerType) { | |
provider.fire(event, withParameters: parameters) | |
} | |
} | |
} | |
// MARK: - Helpers | |
private static func log(_ event: SpectatorEventType, _ parameters: [String: String]?, _ provider: SpectatorProvider) { | |
switch Spectator.shared.logLevel { | |
case .debug: | |
print("[Spectator > \(provider.providerType.identifier)]\n\t> Event: \(event.name)\n\t> isSent: \(Spectator.shared.isFireEventEnabled)\n\t> Parameters: \(parameters ?? [:])") | |
default: | |
break | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment