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
10 changes: 5 additions & 5 deletions splitio/example/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
PODS:
- Flutter (1.0.0)
- Split (2.25.0)
- splitio_ios (0.5.0):
- Split (2.26.1)
- splitio_ios (0.6.0):
- Flutter
- Split (~> 2.25.0)
- Split (~> 2.26.1)

DEPENDENCIES:
- Flutter (from `Flutter`)
Expand All @@ -21,8 +21,8 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
Split: 268875814285de6ab6cd25744e170b407651a080
splitio_ios: f6af0613ceedf0c037673afe256479bb0f6fc6ec
Split: 15cab642eb8b8bb4f289a2190f7b26e655f99756
splitio_ios: 931b5df7148d0dca9acb31a65505bd619f198fcf

PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048

Expand Down
10 changes: 5 additions & 5 deletions splitio_ios/example/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
PODS:
- Flutter (1.0.0)
- Split (2.25.0)
- splitio_ios (0.5.0):
- Split (2.26.1)
- splitio_ios (0.6.0):
- Flutter
- Split (~> 2.25.0)
- Split (~> 2.26.1)

DEPENDENCIES:
- Flutter (from `Flutter`)
Expand All @@ -21,8 +21,8 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
Split: 268875814285de6ab6cd25744e170b407651a080
splitio_ios: f6af0613ceedf0c037673afe256479bb0f6fc6ec
Split: 15cab642eb8b8bb4f289a2190f7b26e655f99756
splitio_ios: 931b5df7148d0dca9acb31a65505bd619f198fcf

PODFILE CHECKSUM: aed42fc5c94ade572556b7ed357c5c57f1bd83a2

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class SplitClientConfigHelperTests: XCTestCase {
XCTAssertTrue(splitClientConfig.encryptionEnabled)
XCTAssertEqual(.verbose, splitClientConfig.logLevel)
XCTAssertEqual(10000, splitClientConfig.sdkReadyTimeOut)
XCTAssertNil(splitClientConfig.certificatePinningConfig)
}

func testEnableDebugLogLevelIsMappedCorrectly() {
Expand Down Expand Up @@ -114,4 +115,24 @@ class SplitClientConfigHelperTests: XCTestCase {
XCTAssertEqual(.bySet, splitClientConfig.sync.filters[0].type)
XCTAssertEqual(["set_1", "set_2"], splitClientConfig.sync.filters[0].values)
}

func testCertificatePinningConfigurationValuesAreMappedCorrectly() {
let configValues = [
"certificatePinningConfiguration": [
"pins": [
"host1": [ "sha256/pin1", "sha1/pin2" ],
"host2": [ "sha256/pin2" ]
]
]
]

let splitClientConfig: SplitClientConfig = SplitClientConfigHelper.fromMap(configurationMap: configValues, impressionListener: nil)
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) &&
(pin.host == "host2" && pin.algo == KeyHashAlgo.sha256 )
}
}
}
7 changes: 3 additions & 4 deletions splitio_ios/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,9 @@ packages:
splitio_platform_interface:
dependency: transitive
description:
name: splitio_platform_interface
sha256: eb0ec278e782bb403856f0921d2023ed8ed1a9e97eafb0f3de5cc4a107d1e04f
url: "https://pub.dev"
source: hosted
path: "../../splitio_platform_interface"
relative: true
source: path
version: "1.4.0"
stack_trace:
dependency: transitive
Expand Down
27 changes: 23 additions & 4 deletions splitio_ios/ios/Classes/SplitClientConfigHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ class SplitClientConfigHelper {
static private let ENCRYPTION_ENABLED = "encryptionEnabled"
static private let LOG_LEVEL = "logLevel"
static private let READY_TIMEOUT = "readyTimeout"
static private let CERTIFICATE_PINNING_CONFIGURATION = "certificatePinningConfiguration"
static private let CERTIFICATE_PINNING_CONFIGURATION_PINS = "pins";

static func fromMap(configurationMap: [String: Any?], impressionListener: SplitImpressionListener?) -> SplitClientConfig {
let config = SplitClientConfig()
Expand Down Expand Up @@ -143,6 +145,8 @@ class SplitClientConfigHelper {
}
}

config.serviceEndpoints = serviceEndpointsBuilder.build()

if let impressionListener = impressionListener {
config.impressionListener = impressionListener
}
Expand All @@ -168,11 +172,11 @@ class SplitClientConfigHelper {
config.sync = syncConfigBuilder.build()
}
}

if let impressionsMode = configurationMap[IMPRESSIONS_MODE] as? String {
config.impressionsMode = impressionsMode.uppercased()
}

if let syncEnabled = configurationMap[SYNC_ENABLED] as? Bool {
config.syncEnabled = syncEnabled
}
Expand Down Expand Up @@ -213,14 +217,29 @@ class SplitClientConfigHelper {
config.sdkReadyTimeOut = readyTimeout * 1000 // iOS SDK uses this parameter in millis
}

config.serviceEndpoints = serviceEndpointsBuilder.build()
if let certPinningConfig = configurationMap[CERTIFICATE_PINNING_CONFIGURATION] as? [String: Any?] {
if let pins = certPinningConfig[CERTIFICATE_PINNING_CONFIGURATION_PINS] as? [String: [String]] {
let pinningConfigBuilder = CertificatePinningConfig.builder()
for (hostName, hostPins) in pins {
for hostPin in hostPins {
pinningConfigBuilder.addPin(host: hostName, keyHash: hostPin)
}
}

do {
try config.certificatePinningConfig = pinningConfigBuilder.build()
} catch {

}
}
}

return config
}

static func impressionListenerEnabled(configurationMap: [String: Any?]) -> Bool {
if configurationMap[IMPRESSION_LISTENER] != nil {
if let impressionListenerEnabled = configurationMap[IMPRESSION_LISTENER] as? Bool {
if configurationMap[IMPRESSION_LISTENER] is Bool {
return true
}
}
Expand Down
4 changes: 2 additions & 2 deletions splitio_ios/ios/splitio_ios.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#
Pod::Spec.new do |s|
s.name = 'splitio_ios'
s.version = '0.5.0'
s.version = '0.6.0'
s.summary = 'split.io official Flutter plugin.'
s.description = <<-DESC
split.io official Flutter plugin.
Expand All @@ -15,7 +15,7 @@ split.io official Flutter plugin.
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
s.dependency 'Flutter'
s.dependency 'Split', '~> 2.25.0'
s.dependency 'Split', '~> 2.26.1'
s.platform = :ios, '9.0'

# Flutter.framework does not contain a i386 slice.
Expand Down