Skip to content

Commit f7745ae

Browse files
fix(client configuration): default headers not applied (#839)
1 parent 50369ab commit f7745ae

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

Sources/AlgoliaSearchClient/Models/Settings/Auxiliary/CustomRankingCriterion.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ extension CustomRankingCriterion: RawRepresentable {
3232
guard
3333
let prefixedString = PrefixedString(rawValue: rawValue),
3434
let prefix = Prefix(rawValue: prefixedString.prefix) else {
35-
return nil
35+
return nil
3636
}
3737
switch prefix {
3838
case .asc:

Sources/AlgoliaSearchClient/Transport/HTTP/HTTPRequestBuilder.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ class HTTPRequestBuilder {
3232
let timeout = command.requestOptions?.timeout(for: command.callType) ?? configuration.timeout(for: command.callType)
3333
var request = URLRequest(command: command).setIfNotNil(\.credentials, to: credentials)
3434
request.addValue(UserAgentController.httpHeaderValue, forHTTPHeaderField: HTTPHeaderKey.userAgent.rawValue)
35+
if let defaultHeaders = configuration.defaultHeaders {
36+
for header in defaultHeaders {
37+
request.addValue(header.value, forHTTPHeaderField: header.key.rawValue)
38+
}
39+
}
3540
return HTTPRequest(requester: requester,
3641
retryStrategy: retryStrategy,
3742
request: request,
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//
2+
// CustomClientConfigurationTests.swift
3+
//
4+
//
5+
// Created by Vladislav Fitc on 27/11/2023.
6+
//
7+
8+
import Foundation
9+
10+
import Foundation
11+
import XCTest
12+
@testable import AlgoliaSearchClient
13+
14+
class CustomClientConfigurationTests: XCTestCase {
15+
16+
func testCustomHeaders() throws {
17+
let configuration = SearchConfiguration(applicationID: "undefined", apiKey: "undefined")
18+
.set(\.defaultHeaders, to: ["default-header": "default-header-value"])
19+
20+
let requester = TestRequester()
21+
22+
let client = SearchClient(configuration: configuration,
23+
requester: requester)
24+
25+
let exp = expectation(description: "method call")
26+
27+
requester.onRequest = { request in
28+
let headers = request.allHTTPHeaderFields ?? [:]
29+
XCTAssert(headers.contains(where: { $0.key == "default-header" && $0.value == "default-header-value" }))
30+
XCTAssert((request.allHTTPHeaderFields ?? [:]).contains(where: { $0.key == "another-header" && $0.value == "another-value" }))
31+
exp.fulfill()
32+
}
33+
34+
let queries: [MultiSearchQuery] = [
35+
.hitsSearch(.init(indexName: "some-index", query: "search"))
36+
]
37+
38+
let requestOptions = RequestOptions(headers: ["another-header": "another-value"])
39+
40+
client.search(queries: queries, requestOptions: requestOptions) { _ in }
41+
42+
waitForExpectations(timeout: 5)
43+
44+
}
45+
46+
}

0 commit comments

Comments
 (0)