Skip to content

Commit 51a0890

Browse files
authored
Merge pull request #341 from algolia/fix/multi-query-headers
fix: add `requestOptions` to `MultiSearcher` init
2 parents 8c390ad + 9c59db6 commit 51a0890

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

Sources/InstantSearchCore/Searcher/Multi/MultiSearcher.swift

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,21 @@ public class MultiSearcher: AbstractMultiSearcher<AlgoliaMultiSearchService> {
1414
- Parameters:
1515
- client: Algolia search client
1616
*/
17+
@available(*, deprecated, message: "Use init(client:requestOptions:) instead")
1718
public convenience init(client: SearchClient) {
19+
self.init(client: client, requestOptions: nil)
20+
}
21+
22+
/**
23+
- Parameters:
24+
- client: Algolia search client
25+
- requestOptions: Custom request options. Default is `nil`.
26+
*/
27+
public convenience init(client: SearchClient, requestOptions: RequestOptions? = nil) {
1828
let service = AlgoliaMultiSearchService(client: client)
1929
let initialRequest = Request(queries: [],
2030
strategy: .none,
21-
requestOptions: .none)
31+
requestOptions: requestOptions)
2232
self.init(service: service,
2333
initialRequest: initialRequest)
2434
Telemetry.shared.trace(type: .multiSearcher)
@@ -29,17 +39,30 @@ public class MultiSearcher: AbstractMultiSearcher<AlgoliaMultiSearchService> {
2939
- appID: Application ID
3040
- apiKey: API Key
3141
*/
42+
@available(*, deprecated, message: "Use init(appID:apiKey:requestOptions:) instead")
3243
public convenience init(appID: ApplicationID,
3344
apiKey: APIKey) {
45+
self.init(appID: appID, apiKey: apiKey, requestOptions: nil)
46+
}
47+
48+
/**
49+
- Parameters:
50+
- appID: Application ID
51+
- apiKey: API Key
52+
- requestOptions: Custom request options. Default is `nil`.
53+
*/
54+
public convenience init(appID: ApplicationID,
55+
apiKey: APIKey,
56+
requestOptions: RequestOptions? = nil) {
3457
let client = SearchClient(appID: appID, apiKey: apiKey)
35-
self.init(client: client)
58+
self.init(client: client, requestOptions: requestOptions)
3659
}
3760

3861
/**
3962
- Parameters:
4063
- indexName: Name of the index in which search will be performed
4164
- query: Instance of Query. By default a new empty instant of Query will be created.
42-
- requestOptions: Custom request options. Default is `nil`.
65+
- requestOptions: requestOptions: Deprecated: This option does not have an effect, use `requestOptions` in `init` instead.
4366
*/
4467
@discardableResult public func addHitsSearcher(indexName: IndexName,
4568
query: Query = .init(),
@@ -57,7 +80,7 @@ public class MultiSearcher: AbstractMultiSearcher<AlgoliaMultiSearchService> {
5780
- query: Instance of Query. By default a new empty instant of Query will be created.
5881
- attribute: Name of facet attribute for which the values will be searched
5982
- facetQuery: Initial facet search query
60-
- requestOptions: Custom request options. Default is `nil`.
83+
- requestOptions: requestOptions: Deprecated: This option does not have an effect, use `requestOptions` in `init` instead.
6184
*/
6285
@discardableResult public func addFacetsSearcher(indexName: IndexName,
6386
query: Query = .init(),

Tests/InstantSearchCoreTests/Unit/Searcher/MultiSearcherTests.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,19 @@ class MultiSearcherTests: XCTestCase {
4545

4646
completion(.success(["res1", "res2", "res3", "res4"]))
4747
}
48+
49+
func testRequestOptions() {
50+
let searcher = MultiSearcher(appID: "", apiKey: "", requestOptions: .init(headers: ["test": "test"]))
51+
searcher.addHitsSearcher(indexName: "")
52+
53+
let exp = expectation(description: "Search expectation")
54+
searcher.onRequestChanged.subscribe(with: self) { _, request in
55+
XCTAssertEqual(request.requestOptions?.headers, ["test": "test"])
56+
exp.fulfill()
57+
}
58+
searcher.search()
59+
waitForExpectations(timeout: 2, handler: .none)
60+
}
4861
}
4962

5063
struct TestMultiRequest: MultiRequest {

0 commit comments

Comments
 (0)