Skip to content

Commit 0a61eb8

Browse files
authored
Added ability to adjust CDN url. (#3)
1 parent 667ba46 commit 0a61eb8

File tree

5 files changed

+31
-13
lines changed

5 files changed

+31
-13
lines changed

SegmentExample/AppDelegate.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
2323
let analytics = Analytics(configuration: config)
2424
self.analytics = analytics
2525

26-
analytics.add(plugin: AfterPlugin(name: "hello", analytics: analytics))
26+
analytics.add(plugin: AfterPlugin(name: "AfterPlugin_EndOfTimeline", analytics: analytics))
2727

2828
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) {
29-
analytics.identify(userId: "Live Demo -- never breaks")
30-
analytics.track(name: "I once tracked a cougar", properties: MyTraits(email: "Brandon@stinks.com"))
31-
analytics.screen(screenTitle: "Screened the AppDelegate")
32-
analytics.group(groupId: "Grouped By ID")
33-
//analytics.alias(newId: "3333")
29+
analytics.identify(userId: "Segment Spec: Identify")
30+
analytics.track(name: "Segment Spec: Track", properties: MyTraits(email: "info@segment.com"))
31+
analytics.screen(screenTitle: "Segment Spec: Screen")
32+
analytics.group(groupId: "Segment Spec: Group")
33+
//analytics.alias(newId: "Segment Spec: Alias")
3434
}
3535

3636
return true

Sources/Segment/Configuration.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class Configuration {
3030
var defaultSettings: Settings? = nil
3131
var autoAddSegmentDestination: Bool = true
3232
var apiHost: String = HTTPClient.getDefaultAPIHost()
33+
var cdnHost: String = HTTPClient.getDefaultCDNHost()
3334
}
3435
internal var values: Values
3536

@@ -83,5 +84,11 @@ public extension Configuration {
8384
values.apiHost = value
8485
return self
8586
}
87+
88+
@discardableResult
89+
func cdnHost(_ value: String) -> Configuration {
90+
values.cdnHost = value
91+
return self
92+
}
8693
}
8794

Sources/Segment/Plugins/SegmentDestination.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class SegmentDestination: DestinationPlugin {
4141
}
4242

4343
public func update(settings: Settings) {
44-
let segmentInfo = settings.integrationSettings(for: "Segment.io")
44+
let segmentInfo = settings.integrationSettings(for: Self.Constants.integrationName.rawValue)
4545
let apiKey = segmentInfo?[Self.Constants.apiKey.rawValue] as? String
4646
let apiHost = segmentInfo?[Self.Constants.apiHost.rawValue] as? String
4747
if (apiHost != nil && apiKey != nil) {

Sources/Segment/Settings.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ public struct Settings: Codable {
1414

1515
public init(writeKey: String, apiHost: String) {
1616
integrations = try! JSON([
17-
"Segment.io": [
18-
"apiKey": writeKey,
19-
"apiHost": apiHost
17+
SegmentDestination.Constants.integrationName.rawValue: [
18+
SegmentDestination.Constants.apiKey.rawValue: writeKey,
19+
SegmentDestination.Constants.apiHost.rawValue: apiHost
2020
]
2121
])
2222
}
@@ -50,7 +50,7 @@ public struct Settings: Codable {
5050
extension Analytics {
5151
func checkSettings() {
5252
let writeKey = self.configuration.values.writeKey
53-
let httpClient = HTTPClient(analytics: self)
53+
let httpClient = HTTPClient(analytics: self, cdnHost: configuration.values.cdnHost)
5454
httpClient.settingsFor(writeKey: writeKey) { (success, settings) in
5555
if success {
5656
if let s = settings {

Sources/Segment/Utilities/HTTPClient.swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ public class HTTPClient {
2020
private var writeKeySessions = [String: URLSession]()
2121
private var apiHost: String
2222
private var apiKey: String
23+
private var cdnHost: String
2324
private let analytics: Analytics
2425

25-
init(analytics: Analytics, apiKey: String? = nil, apiHost: String? = nil) {
26+
init(analytics: Analytics, apiKey: String? = nil, apiHost: String? = nil, cdnHost: String? = nil) {
2627
self.analytics = analytics
2728

2829
if let apiKey = apiKey {
@@ -36,6 +37,12 @@ public class HTTPClient {
3637
} else {
3738
self.apiHost = Self.defaultAPIHost
3839
}
40+
41+
if let cdnHost = cdnHost {
42+
self.cdnHost = cdnHost
43+
} else {
44+
self.cdnHost = Self.defaultCDNHost
45+
}
3946
}
4047

4148
func segmentURL(for host: String, path: String) -> URL? {
@@ -103,7 +110,7 @@ public class HTTPClient {
103110
// from write key sessions for uploading.
104111
let settingsKey = "\(writeKey)_settings"
105112

106-
guard let settingsURL = segmentURL(for: Self.defaultCDNHost, path: "/projects/\(writeKey)/settings") else {
113+
guard let settingsURL = segmentURL(for: cdnHost, path: "/projects/\(writeKey)/settings") else {
107114
completion(false, nil)
108115
return
109116
}
@@ -165,6 +172,10 @@ extension HTTPClient {
165172
internal static func getDefaultAPIHost() -> String {
166173
return Self.defaultAPIHost
167174
}
175+
176+
internal static func getDefaultCDNHost() -> String {
177+
return Self.defaultCDNHost
178+
}
168179
}
169180

170181

0 commit comments

Comments
 (0)