Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Sources/Data Model/Experiment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import Foundation

struct Experiment: Codable, OptimizelyExperiment, ExperimentCore {
struct Experiment: Codable, ExperimentCore {
enum Status: String, Codable {
case running = "Running"
case launched = "Launched"
Expand Down
21 changes: 19 additions & 2 deletions Sources/Data Model/Holdout.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,32 @@ struct Holdout: Codable, ExperimentCore {
var trafficAllocation: [TrafficAllocation]
var audienceIds: [String]
var audienceConditions: ConditionHolder?
var includedFlags: [String]?
var excludedFlags: [String]?
var includedFlags: [String]
var excludedFlags: [String]

enum CodingKeys: String, CodingKey {
case id, key, status, layerId, variations, trafficAllocation, audienceIds, audienceConditions, includedFlags, excludedFlags
}

// replace with serialized string representation with audience names when ProjectConfig is ready
var audiences: String = ""


init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)

id = try container.decode(String.self, forKey: .id)
key = try container.decode(String.self, forKey: .key)
status = try container.decode(Status.self, forKey: .status)
layerId = try container.decode(String.self, forKey: .layerId)
variations = try container.decode([Variation].self, forKey: .variations)
trafficAllocation = try container.decode([TrafficAllocation].self, forKey: .trafficAllocation)
audienceIds = try container.decode([String].self, forKey: .audienceIds)
audienceConditions = try container.decodeIfPresent(ConditionHolder.self, forKey: .audienceConditions)

includedFlags = try container.decodeIfPresent([String].self, forKey: .includedFlags) ?? []
excludedFlags = try container.decodeIfPresent([String].self, forKey: .excludedFlags) ?? []
}
}

extension Holdout: Equatable {
Expand Down
3 changes: 3 additions & 0 deletions Sources/Optimizely/OptimizelyConfig.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ public protocol OptimizelyExperiment {
var variationsMap: [String: OptimizelyVariation] { get }
}

// Experiment compliances OptimizelyExperiment
extension Experiment: OptimizelyExperiment { }

public protocol OptimizelyFeature {
var id: String { get }
var key: String { get }
Expand Down
Loading