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
4 changes: 4 additions & 0 deletions AutocompleteClient.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
/* Begin PBXBuildFile section */
08465ECA2161C96900AEBD76 /* TrackSearchResultClickRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08465EC92161C96900AEBD76 /* TrackSearchResultClickRequestBuilder.swift */; };
08465ECC2161D0B100AEBD76 /* TrackSessionStartRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08465ECB2161D0B100AEBD76 /* TrackSessionStartRequestBuilder.swift */; };
08689F0121897914000D3565 /* ConstructorIOUserIDTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08689F0021897914000D3565 /* ConstructorIOUserIDTests.swift */; };
0874A32E216BCE2700812CDC /* ConstructorIOABTestCellTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0874A32D216BCE2700812CDC /* ConstructorIOABTestCellTests.swift */; };
0879E93F215F290D00018BBA /* TrackAutocompleteSelectRequestBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0879E93E215F290D00018BBA /* TrackAutocompleteSelectRequestBuilderTests.swift */; };
088F7D1C210FA3B4005B9FB4 /* CIOSessionManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 088F7D1B210FA3B4005B9FB4 /* CIOSessionManagerDelegate.swift */; };
Expand Down Expand Up @@ -196,6 +197,7 @@
/* Begin PBXFileReference section */
08465EC92161C96900AEBD76 /* TrackSearchResultClickRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSearchResultClickRequestBuilder.swift; sourceTree = "<group>"; };
08465ECB2161D0B100AEBD76 /* TrackSessionStartRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSessionStartRequestBuilder.swift; sourceTree = "<group>"; };
08689F0021897914000D3565 /* ConstructorIOUserIDTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstructorIOUserIDTests.swift; sourceTree = "<group>"; };
0874A32D216BCE2700812CDC /* ConstructorIOABTestCellTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstructorIOABTestCellTests.swift; sourceTree = "<group>"; };
0879E93E215F290D00018BBA /* TrackAutocompleteSelectRequestBuilderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrackAutocompleteSelectRequestBuilderTests.swift; sourceTree = "<group>"; };
088F7D1B210FA3B4005B9FB4 /* CIOSessionManagerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIOSessionManagerDelegate.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -568,6 +570,7 @@
F64E94E8212DC93300E50EDE /* ConstructorIOAutocompleteTests.swift */,
F63808FE1F5D6C1000C3B322 /* ConstructorIOTests.swift */,
0874A32D216BCE2700812CDC /* ConstructorIOABTestCellTests.swift */,
08689F0021897914000D3565 /* ConstructorIOUserIDTests.swift */,
);
path = Worker;
sourceTree = "<group>";
Expand Down Expand Up @@ -1553,6 +1556,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
08689F0121897914000D3565 /* ConstructorIOUserIDTests.swift in Sources */,
F64F46B51F5975070094C697 /* AutocompleteResultTests.swift in Sources */,
F1C557451F605C9D0040D6AD /* TrackConversionRequestBuilderTests.swift in Sources */,
F685254021380CAB00A27FAA /* Matcher+Regex.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ public class RequestBuilder {
queryItems.add(URLQueryItem(name: Constants.Query.apiKey, value: apiKey))
}

func set(userID: String){
queryItems.add(URLQueryItem(name: "ui", value: userID))
}

func set(clientID: String){
queryItems.add(URLQueryItem(name: "i", value: clientID))
}
Expand Down Expand Up @@ -70,7 +74,7 @@ public class RequestBuilder {
}

private func addDateQueryItem(queryItems items: inout QueryItemCollection){
let dateString = String(Int(self.dateProvider.provideDate().timeIntervalSince1970 * 1000))
let dateString = String(Int64(self.dateProvider.provideDate().timeIntervalSince1970 * 1000))
items.add(URLQueryItem(name: Constants.Track.dateTime, value: dateString))
}
}
10 changes: 10 additions & 0 deletions AutocompleteClient/FW/Logic/Worker/ConstructorIO.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ public class ConstructorIO: CIOSessionManagerDelegate {

public let clientID: String?

public var userID: String?

public var sessionID: Int{
get {
return self.sessionManager.getSessionWithIncrement()
Expand Down Expand Up @@ -144,6 +146,7 @@ public class ConstructorIO: CIOSessionManagerDelegate {
private func buildRequest(data: CIORequestData) -> URLRequest{
let requestBuilder = RequestBuilder(apiKey: self.config.apiKey)
self.attachClientID(requestBuilder: requestBuilder)
self.attachUserID(requestBuilder: requestBuilder)
self.attachSessionIDWithIncrement(requestBuilder: requestBuilder)
self.attachABTestCells(requestBuilder: requestBuilder)
requestBuilder.build(trackData: data)
Expand All @@ -154,6 +157,7 @@ public class ConstructorIO: CIOSessionManagerDelegate {
let data = CIOTrackSessionStartData(session: session)
let requestBuilder = RequestBuilder(apiKey: self.config.apiKey)
self.attachClientID(requestBuilder: requestBuilder)
self.attachUserID(requestBuilder: requestBuilder)
self.attachSessionIDWithoutIncrement(requestBuilder: requestBuilder)
self.attachABTestCells(requestBuilder: requestBuilder)
requestBuilder.build(trackData: data)
Expand All @@ -165,6 +169,12 @@ public class ConstructorIO: CIOSessionManagerDelegate {
requestBuilder.set(testCellKey: cell.key, testCellValue: cell.value);
})
}

private func attachUserID(requestBuilder: RequestBuilder){
if let uid = self.userID{
requestBuilder.set(userID: uid)
}
}

private func attachClientID(requestBuilder: RequestBuilder){
if let cID = self.clientID{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//
// ConstructorIOUserIDTests.swift
// AutocompleteClientTests
//
// Copyright © Constructor.io. All rights reserved.
// http://constructor.io/
//

import XCTest
@testable import ConstructorAutocomplete

class ConstructorIOUserIDTests: XCTestCase {

var constructor: ConstructorIO!

override func setUp() {
super.setUp()
self.constructor = TestConstants.testConstructor()
self.constructor.userID = "abcdefg";
}

func testAutocomplete() {
let term = "a term"
let query = CIOAutocompleteQuery(query: term)
let builder = CIOBuilder(expectation: "Calling Autocomplete with 200 should return a response", builder: http(200))
stub(regex("https://ac.cnstrc.com/autocomplete/a%20term?s=1&i=\(kRegexClientID)&ui=abcdefg&key=key_OucJxxrfiTVUQx0C&c=cioios-&_dt=\(kRegexTimestamp)"), builder.create())

self.constructor.autocomplete(forQuery: query) { (response) in }
self.wait(for: builder.expectation)
}

func testTrackInputFocus(){
let searchTerm = "corn"
let builder = CIOBuilder(expectation: "Calling trackInputFocus should send a valid request.", builder: http(200))
stub(regex("https://ac.cnstrc.com/behavior?action=focus&i=\(kRegexClientID)&ui=abcdefg&key=key_OucJxxrfiTVUQx0C&c=cioios-&s=1&term=corn&_dt=\(kRegexTimestamp)"), builder.create())
self.constructor.trackInputFocus(searchTerm: searchTerm)
self.wait(for: builder.expectation)
}
}
5 changes: 4 additions & 1 deletion UserApplication/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, CIOAutocompleteDelegate,
let config = ConstructorIOConfig(apiKey: key,
resultCount: AutocompleteResultCount(numResultsForSection: ["Search Suggestions" : 3, "Products" : 0]))
let viewController = CIOAutocompleteViewController(config: config)

viewController.searchBarDisplayMode = CIOSearchBarDisplayMode.NavigationBar
viewController.searchBarShouldShowCancelButton = false

Expand Down Expand Up @@ -163,6 +163,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, CIOAutocompleteDelegate,

func autocompleteControllerWillAppear(controller: CIOAutocompleteViewController) {
print("Search controller will appear")
if controller.constructorIO.userID == nil{
controller.constructorIO.userID = "user_id$1 3"
}
}

func autocompleteControllerDidLoad(controller: CIOAutocompleteViewController) {
Expand Down