Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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: 2 additions & 0 deletions splitio/example/ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ target 'Runner' do
use_modular_headers!

flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

pod 'Split', :git => 'https://github.com/splitio/ios-client.git', :branch => 'SDKS-9073_baseline' # TODO: remove; development only
end

post_install do |installer|
Expand Down
23 changes: 14 additions & 9 deletions splitio/example/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
PODS:
- Flutter (1.0.0)
- Split (3.0.0)
- Split (3.1.0)
- splitio_ios (0.7.0):
- Flutter
- Split (~> 3.0.0)
- Split

DEPENDENCIES:
- Flutter (from `Flutter`)
- Split (from `https://github.com/splitio/ios-client.git`, branch `SDKS-9073_baseline`)
- splitio_ios (from `.symlinks/plugins/splitio_ios/ios`)

SPEC REPOS:
trunk:
- Split

EXTERNAL SOURCES:
Flutter:
:path: Flutter
Split:
:branch: SDKS-9073_baseline
:git: https://github.com/splitio/ios-client.git
splitio_ios:
:path: ".symlinks/plugins/splitio_ios/ios"

CHECKOUT OPTIONS:
Split:
:commit: 708427ff99d24e2f2ae6e5a672ee23efebafba06
:git: https://github.com/splitio/ios-client.git

SPEC CHECKSUMS:
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
Split: 66424040ad573d052f58269f841e71b34578a916
splitio_ios: e4e3becbe89cae0a2fa9ca03a575c21f23af0d90
Split: 17f15abcc74b39c3a8d670f59e787163626ad6b5
splitio_ios: 00bf48283a9e3f9497a973d9b5cafc5d414dd427

PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048
PODFILE CHECKSUM: a52d9df387b5aca8aed91ec989839c51add619b2

COCOAPODS: 1.15.0
14 changes: 6 additions & 8 deletions splitio/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,16 @@ packages:
splitio_ios:
dependency: transitive
description:
name: splitio_ios
sha256: "7c7a2a60711b8e6267cde7e2754d30931dafc76b20b28e1356624963628cb166"
url: "https://pub.dev"
source: hosted
path: "../../splitio_ios"
relative: true
source: path
version: "0.2.0"
splitio_platform_interface:
dependency: transitive
description:
name: splitio_platform_interface
sha256: "2f0457991d18d654486264a66dacf54c7cf23cd88bbb73ed299d69dbbc2fd49b"
url: "https://pub.dev"
source: hosted
path: "../../splitio_platform_interface"
relative: true
source: path
version: "1.5.0"
stack_trace:
dependency: transitive
Expand Down
9 changes: 5 additions & 4 deletions splitio/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ flutter:
dependencies:
flutter:
sdk: flutter
splitio_android:
splitio_android: # ^0.2.0
path: ../splitio_android
splitio_ios: ^0.2.0
splitio_platform_interface: ^1.5.0

splitio_ios: # ^0.2.0
path: ../splitio_ios
splitio_platform_interface: # ^1.5.0
path: ../splitio_platform_interface
dev_dependencies:
flutter_test:
sdk: flutter
Expand Down
3 changes: 2 additions & 1 deletion splitio_android/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ flutter:
dependencies:
flutter:
sdk: flutter
splitio_platform_interface: ^1.5.0
splitio_platform_interface: # ^1.5.0
path: ../splitio_platform_interface

dev_dependencies:
flutter_test:
Expand Down
4 changes: 4 additions & 0 deletions splitio_ios/example/ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,17 @@ target 'Runner' do
use_modular_headers!

flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

pod 'Split', :git => 'https://github.com/splitio/ios-client.git', :branch => 'SDKS-9073_baseline' # TODO: remove; development only
end

target 'SplitTests' do
use_frameworks!
use_modular_headers!

flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

pod 'Split', :git => 'https://github.com/splitio/ios-client.git', :branch => 'SDKS-9073_baseline' # TODO: remove; development only
end

post_install do |installer|
Expand Down
23 changes: 14 additions & 9 deletions splitio_ios/example/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
PODS:
- Flutter (1.0.0)
- Split (3.0.0)
- Split (3.1.0)
- splitio_ios (0.7.0):
- Flutter
- Split (~> 3.0.0)
- Split

DEPENDENCIES:
- Flutter (from `Flutter`)
- Split (from `https://github.com/splitio/ios-client.git`, branch `SDKS-9073_baseline`)
- splitio_ios (from `.symlinks/plugins/splitio_ios/ios`)

SPEC REPOS:
trunk:
- Split

EXTERNAL SOURCES:
Flutter:
:path: Flutter
Split:
:branch: SDKS-9073_baseline
:git: https://github.com/splitio/ios-client.git
splitio_ios:
:path: ".symlinks/plugins/splitio_ios/ios"

CHECKOUT OPTIONS:
Split:
:commit: 708427ff99d24e2f2ae6e5a672ee23efebafba06
:git: https://github.com/splitio/ios-client.git

SPEC CHECKSUMS:
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
Split: 66424040ad573d052f58269f841e71b34578a916
splitio_ios: e4e3becbe89cae0a2fa9ca03a575c21f23af0d90
Split: 17f15abcc74b39c3a8d670f59e787163626ad6b5
splitio_ios: 00bf48283a9e3f9497a973d9b5cafc5d414dd427

PODFILE CHECKSUM: aed42fc5c94ade572556b7ed357c5c57f1bd83a2
PODFILE CHECKSUM: 3e7633332e3580ada5ac333ff9c0b05e8c0b7972

COCOAPODS: 1.15.0
27 changes: 27 additions & 0 deletions splitio_ios/example/ios/SplitTests/ExtensionsTests.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import XCTest
import Split
@testable import splitio_ios

class ExtensionsTests: XCTestCase {

Expand All @@ -26,4 +27,30 @@ class ExtensionsTests: XCTestCase {
"split": "my-split",
"time": 16161616]))
}

func testSplitViewMapping() throws {
var splitView = SplitView()
splitView.name = "my-split"
splitView.trafficType = "account"
splitView.killed = true
splitView.treatments = ["on", "off"]
splitView.changeNumber = 121212
splitView.configs = ["key": "value"]
splitView.defaultTreatment = "off"
splitView.sets = ["set1", "set2"]
splitView.impressionsDisabled = true

let splitViewMap = SplitView.asMap(splitView: splitView)
XCTAssert(splitViewMap.count == 9)
XCTAssert(NSDictionary(dictionary: splitViewMap).isEqual(to: [
"name": "my-split",
"trafficType": "account",
"killed": true,
"treatments": ["on", "off"],
"changeNumber": 121212,
"configs": ["key": "value"],
"defaultTreatment": "off",
"sets": ["set1", "set2"],
"impressionsDisabled": true]))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,31 @@ class SplitClientConfigHelperTests: XCTestCase {
]

let splitClientConfig: SplitClientConfig = SplitClientConfigHelper.fromMap(configurationMap: configValues, impressionListener: nil)
let actualConfig = splitClientConfig.certificatePinningConfig?.pins
let actualConfig = splitClientConfig.certificatePinningConfig!.pins

let containsPins = actualConfig?.contains { pin in
(pin.host == "host1" && pin.algo == KeyHashAlgo.sha256) &&
(pin.host == "host1" && pin.algo == KeyHashAlgo.sha1) &&
let containsPins = actualConfig.contains { pin in
(pin.host == "host1" && pin.algo == KeyHashAlgo.sha256) } &&
actualConfig.contains { pin in
(pin.host == "host1" && pin.algo == KeyHashAlgo.sha1) } &&
actualConfig.contains { pin in
(pin.host == "host2" && pin.algo == KeyHashAlgo.sha256 )
}

XCTAssertTrue(containsPins)
}

func testRolloutCacheConfigurationValuesAreMappedCorrectly() {
let configValues = [
"rolloutCacheConfiguration": [
"expirationDays": 5,
"clearOnInit": true
]
]

let splitClientConfig: SplitClientConfig = SplitClientConfigHelper.fromMap(configurationMap: configValues, impressionListener: nil)
let actualConfig = splitClientConfig.rolloutCacheConfiguration!

XCTAssertEqual(5, actualConfig.expirationDays)
XCTAssertTrue(actualConfig.clearOnInit)
}
}
4 changes: 2 additions & 2 deletions splitio_ios/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -166,14 +166,14 @@ packages:
path: ".."
relative: true
source: path
version: "0.1.9"
version: "0.2.0"
splitio_platform_interface:
dependency: transitive
description:
path: "../../splitio_platform_interface"
relative: true
source: path
version: "1.4.0"
version: "1.5.0"
stack_trace:
dependency: transitive
description:
Expand Down
5 changes: 3 additions & 2 deletions splitio_ios/ios/Classes/Extensions.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Split

extension Impression {
public func toMap() -> [String: Any?] {
func toMap() -> [String: Any?] {
["key": keyName,
"bucketingKey": bucketingKey,
"split": feature,
Expand All @@ -24,7 +24,8 @@ extension SplitView {
"changeNumber": splitView.changeNumber,
"configs": splitView.configs,
"defaultTreatment": splitView.defaultTreatment,
"sets": splitView.sets
"sets": splitView.sets,
"impressionsDisabled": splitView.impressionsDisabled,
]
} else {
return [:]
Expand Down
29 changes: 24 additions & 5 deletions splitio_ios/ios/Classes/SplitClientConfigHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ class SplitClientConfigHelper {
static private let READY_TIMEOUT = "readyTimeout"
static private let CERTIFICATE_PINNING_CONFIGURATION = "certificatePinningConfiguration"
static private let CERTIFICATE_PINNING_CONFIGURATION_PINS = "pins";
static private let ROLLOUT_CACHE_CONFIGURATION = "rolloutCacheConfiguration"
static private let ROLLOUT_CACHE_CONFIGURATION_EXPIRATION = "expirationDays"
static private let ROLLOUT_CACHE_CONFIGURATION_CLEAR_ON_INIT = "clearOnInit"

static func fromMap(configurationMap: [String: Any?], impressionListener: SplitImpressionListener?) -> SplitClientConfig {
let config = SplitClientConfig()
Expand Down Expand Up @@ -117,31 +120,31 @@ class SplitClientConfigHelper {

if configurationMap[SDK_ENDPOINT] != nil {
if let sdkEndpoint = configurationMap[SDK_ENDPOINT] as? String {
serviceEndpointsBuilder.set(sdkEndpoint: sdkEndpoint)
_ = serviceEndpointsBuilder.set(sdkEndpoint: sdkEndpoint)
}
}

if configurationMap[EVENTS_ENDPOINT] != nil {
if let eventsEndpoint = configurationMap[EVENTS_ENDPOINT] as? String {
serviceEndpointsBuilder.set(eventsEndpoint: eventsEndpoint)
_ = serviceEndpointsBuilder.set(eventsEndpoint: eventsEndpoint)
}
}

if configurationMap[SSE_AUTH_SERVICE_ENDPOINT] != nil {
if let sseAuthServiceEndpoint = configurationMap[SSE_AUTH_SERVICE_ENDPOINT] as? String {
serviceEndpointsBuilder.set(authServiceEndpoint: sseAuthServiceEndpoint)
_ = serviceEndpointsBuilder.set(authServiceEndpoint: sseAuthServiceEndpoint)
}
}

if configurationMap[STREAMING_SERVICE_ENDPOINT] != nil {
if let streamingServiceEndpoint = configurationMap[STREAMING_SERVICE_ENDPOINT] as? String {
serviceEndpointsBuilder.set(streamingServiceEndpoint: streamingServiceEndpoint)
_ = serviceEndpointsBuilder.set(streamingServiceEndpoint: streamingServiceEndpoint)
}
}

if configurationMap[TELEMETRY_SERVICE_ENDPOINT] != nil {
if let telemetryServiceEndpoint = configurationMap[TELEMETRY_SERVICE_ENDPOINT] as? String {
serviceEndpointsBuilder.set(telemetryServiceEndpoint: telemetryServiceEndpoint)
_ = serviceEndpointsBuilder.set(telemetryServiceEndpoint: telemetryServiceEndpoint)
}
}

Expand Down Expand Up @@ -234,6 +237,22 @@ class SplitClientConfigHelper {
}
}

if let rolloutCacheConfig = configurationMap[ROLLOUT_CACHE_CONFIGURATION] as? [String: Any?] {
let rolloutCacheConfigurationBuilder = RolloutCacheConfiguration.builder()
if rolloutCacheConfig[ROLLOUT_CACHE_CONFIGURATION_EXPIRATION] != nil {
if let expirationDays = rolloutCacheConfig[ROLLOUT_CACHE_CONFIGURATION_EXPIRATION] as? Int {
rolloutCacheConfigurationBuilder.set(expirationDays: expirationDays)
}
}

if rolloutCacheConfig[ROLLOUT_CACHE_CONFIGURATION_CLEAR_ON_INIT] != nil {
if let clearOnInit = rolloutCacheConfig[ROLLOUT_CACHE_CONFIGURATION_CLEAR_ON_INIT] as? Bool {
rolloutCacheConfigurationBuilder.set(clearOnInit: clearOnInit)
}
}
config.rolloutCacheConfiguration = rolloutCacheConfigurationBuilder.build()
}

return config
}

Expand Down
2 changes: 1 addition & 1 deletion splitio_ios/ios/splitio_ios.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ split.io official Flutter plugin.
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
s.dependency 'Flutter'
s.dependency 'Split', '~> 3.0.0'
s.dependency 'Split' # TODO: specify version
s.platform = :ios, '9.0'

# Flutter.framework does not contain a i386 slice.
Expand Down
3 changes: 2 additions & 1 deletion splitio_ios/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ flutter:
dependencies:
flutter:
sdk: flutter
splitio_platform_interface: ^1.5.0
splitio_platform_interface: # ^1.5.0
path: ../splitio_platform_interface

dev_dependencies:
flutter_test:
Expand Down