-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathDoSomethingProvider.swift
68 lines (57 loc) · 1.93 KB
/
DoSomethingProvider.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import Foundation
import OpenFeature
import Combine
class DoSomethingProvider: FeatureProvider {
public static let name = "Something"
private let eventHandler = EventHandler(.notReady)
private var holdit: AnyCancellable?
func onContextSet(oldContext: OpenFeature.EvaluationContext?, newContext: OpenFeature.EvaluationContext) {
eventHandler.send(.ready)
}
func initialize(initialContext: OpenFeature.EvaluationContext?) {
eventHandler.send(.ready)
}
var hooks: [any OpenFeature.Hook] = []
var metadata: OpenFeature.ProviderMetadata = DoMetadata()
func getBooleanEvaluation(key: String, defaultValue: Bool, context: EvaluationContext?) throws
-> ProviderEvaluation<
Bool
>
{
return ProviderEvaluation(value: !defaultValue)
}
func getStringEvaluation(key: String, defaultValue: String, context: EvaluationContext?) throws
-> ProviderEvaluation<
String
>
{
return ProviderEvaluation(value: String(defaultValue.reversed()))
}
func getIntegerEvaluation(key: String, defaultValue: Int64, context: EvaluationContext?) throws
-> ProviderEvaluation<
Int64
>
{
return ProviderEvaluation(value: defaultValue * 100)
}
func getDoubleEvaluation(key: String, defaultValue: Double, context: EvaluationContext?) throws
-> ProviderEvaluation<
Double
>
{
return ProviderEvaluation(value: defaultValue * 100)
}
func getObjectEvaluation(key: String, defaultValue: Value, context: EvaluationContext?) throws
-> ProviderEvaluation<
Value
>
{
return ProviderEvaluation(value: .null)
}
func observe() -> AnyPublisher<ProviderEvent, Never> {
eventHandler.observe()
}
public struct DoMetadata: ProviderMetadata {
public var name: String? = DoSomethingProvider.name
}
}