Skip to content

Commit 43f6105

Browse files
fix: provide user agents as url parmeter (#808)
1 parent 09622f8 commit 43f6105

File tree

5 files changed

+14
-9
lines changed

5 files changed

+14
-9
lines changed

Sources/AlgoliaSearchClient/Transport/URLSession/URLRequest+Convenience.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,14 @@ extension URLRequest {
5454
var urlComponents = URLComponents()
5555
urlComponents.scheme = "https"
5656
urlComponents.percentEncodedPath = command.path.path
57+
urlComponents.queryItems = [
58+
URLQueryItem(name: "X-Algolia-Agent", value: UserAgentController.httpHeaderValue)
59+
]
5760

5861
if let urlParameters = command.requestOptions?.urlParameters {
59-
urlComponents.queryItems = urlParameters.map { (key, value) in .init(name: key.rawValue, value: value) }
62+
let existingQueryItems = urlComponents.queryItems ?? []
63+
let extraQueryItems = urlParameters.mapKeys(\.rawValue).map(URLQueryItem.init)
64+
urlComponents.queryItems = existingQueryItems + extraQueryItems
6065
}
6166

6267
var request = URLRequest(url: urlComponents.url!)

Tests/AlgoliaSearchClientTests/Unit/Command/AlgoliaCommandTest.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ extension AlgoliaCommandTest {
4646
try XCTAssertEqual(request.httpBody.flatMap(dataToJSON), body.flatMap(dataToJSON), file: file, line: line)
4747
#else
4848
XCTAssertEqual(request.allHTTPHeaderFields, requestOptions.headers.merging(additionalHeaders ?? [:]).mapKeys { $0.rawValue }, file: file, line: line)
49-
XCTAssertEqual(Set(requestQueryItems), queryItems, file: file, line: line)
49+
XCTAssertTrue(Set(requestQueryItems).isSuperset(of: queryItems), file: file, line: line)
5050
XCTAssertEqual(request.httpBody, body, "Compare with assertEqual", file: file, line: line)
5151
#endif
5252
}

Tests/AlgoliaSearchClientTests/Unit/PathTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class PathTests: XCTestCase {
1818
func testIndexNameEncoding() {
1919
let path = URL(string: "/1/indexes/")!.appendingPathComponent("Index name with spaces".addingPercentEncoding(withAllowedCharacters: .urlPathComponentAllowed)!)
2020
let request = URLRequest(command: Command.Custom(method: .post, callType: .write, path: path, body: nil, requestOptions: nil))
21-
XCTAssertEqual(request.url?.absoluteString, "https:/1/indexes/Index%20name%20with%20spaces")
21+
XCTAssertEqual(request.url?.absoluteString.starts(with: "https:/1/indexes/Index%20name%20with%20spaces"), true)
2222
}
2323

2424
}

Tests/AlgoliaSearchClientTests/Unit/RecommendClientTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class RecommendClientTests: XCTestCase {
1818
let exp = expectation(description: "request")
1919

2020
requester.onRequest = { request in
21-
XCTAssertEqual(request.url?.absoluteString, "https://test-app-id-dsn.algolia.net/1/indexes/*/recommendations?")
21+
XCTAssertEqual(request.url?.absoluteString.starts(with: "https://test-app-id-dsn.algolia.net/1/indexes/*/recommendations?"), true)
2222
XCTAssertEqual(request.value(forHTTPHeaderField: "Content-Type"), "application/json")
2323
XCTAssertEqual(request.value(forHTTPHeaderField: "X-Algolia-Application-Id"), "test-app-id")
2424
XCTAssertEqual(request.value(forHTTPHeaderField: "X-Algolia-API-Key"), "test-api-key")
@@ -53,7 +53,7 @@ class RecommendClientTests: XCTestCase {
5353
let exp = expectation(description: "request")
5454

5555
requester.onRequest = { request in
56-
XCTAssertEqual(request.url?.absoluteString, "https://test-app-id-dsn.algolia.net/1/indexes/*/recommendations?")
56+
XCTAssertEqual(request.url?.absoluteString.starts(with: "https://test-app-id-dsn.algolia.net/1/indexes/*/recommendations?"), true)
5757
XCTAssertEqual(request.value(forHTTPHeaderField: "Content-Type"), "application/json")
5858
XCTAssertEqual(request.value(forHTTPHeaderField: "X-Algolia-Application-Id"), "test-app-id")
5959
XCTAssertEqual(request.value(forHTTPHeaderField: "X-Algolia-API-Key"), "test-api-key")
@@ -86,7 +86,7 @@ class RecommendClientTests: XCTestCase {
8686
let exp = expectation(description: "request")
8787

8888
requester.onRequest = { request in
89-
XCTAssertEqual(request.url?.absoluteString, "https://test-app-id-dsn.algolia.net/1/indexes/*/recommendations?")
89+
XCTAssertEqual(request.url?.absoluteString.starts(with: "https://test-app-id-dsn.algolia.net/1/indexes/*/recommendations?"), true)
9090
XCTAssertEqual(request.value(forHTTPHeaderField: "Content-Type"), "application/json")
9191
XCTAssertEqual(request.value(forHTTPHeaderField: "X-Algolia-Application-Id"), "test-app-id")
9292
XCTAssertEqual(request.value(forHTTPHeaderField: "X-Algolia-API-Key"), "test-api-key")

Tests/AlgoliaSearchClientTests/Unit/Transport/URLRequestConstructionTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class URLRequestConstructionTests: XCTestCase {
3333
XCTAssertEqual(request.allHTTPHeaderFields, expectedHeaders)
3434
#endif
3535
XCTAssertEqual(request.httpMethod, method.rawValue)
36-
XCTAssertEqual(request.url?.absoluteString, "https:/my/test/path")
36+
XCTAssertEqual(request.url?.absoluteString.starts(with: "https:/my/test/path"), true)
3737
XCTAssertEqual(request.httpBody, body)
3838

3939
}
@@ -73,7 +73,7 @@ class URLRequestConstructionTests: XCTestCase {
7373
host.retryCount = index
7474
let requestWithHost = try request.switchingHost(by: host, withBaseTimeout: timeout)
7575
XCTAssertEqual(requestWithHost.timeoutInterval, timeout * TimeInterval(index + 1))
76-
XCTAssertEqual(requestWithHost.url?.absoluteString, "https://test\(index).algolia.com/my/test/path")
76+
XCTAssertEqual(requestWithHost.url?.absoluteString.starts(with: "https://test\(index).algolia.com/my/test/path"), true)
7777
}
7878

7979
}
@@ -83,7 +83,7 @@ class URLRequestConstructionTests: XCTestCase {
8383
objectID: "gid://shopify/Collection/1122334455",
8484
attributesToRetrieve: [],
8585
requestOptions: nil)
86-
XCTAssertEqual(URLRequest(command: command).url?.absoluteString, "https:/1/indexes/myIndex/gid:%2F%2Fshopify%2FCollection%2F1122334455")
86+
XCTAssertEqual(URLRequest(command: command).url?.absoluteString.starts(with: "https:/1/indexes/myIndex/gid:%2F%2Fshopify%2FCollection%2F1122334455"), true)
8787
}
8888

8989
func testFiltersEncoding() {

0 commit comments

Comments
 (0)