Skip to content

Commit 58ad2eb

Browse files
Replace static UserAgent with UserAgent extensions (#764)
1 parent 72dfa0e commit 58ad2eb

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

Sources/AlgoliaSearchClient/Helpers/UserAgent/UserAgent.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ extension UserAgent: CustomStringConvertible {
3333

3434
}
3535

36+
extension UserAgent: UserAgentExtending {
37+
38+
public var userAgentExtension: String {
39+
return description
40+
}
41+
42+
}
43+
3644
extension UserAgent {
3745

3846
static var library: UserAgent {

Sources/AlgoliaSearchClient/Helpers/UserAgent/UserAgentController.swift

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,32 @@ import Foundation
99

1010
public struct UserAgentController {
1111

12-
public internal(set) static var userAgents: [UserAgent] = [.operatingSystem, .library]
12+
public static var userAgents: [UserAgent] {
13+
extensions.compactMap { $0 as? UserAgent }
14+
}
15+
16+
public internal(set) static var extensions: [UserAgentExtending] = [UserAgent.operatingSystem, UserAgent.library]
17+
18+
public static var httpHeaderValue: String {
19+
return extensions.map(\.userAgentExtension).joined(separator: "; ")
20+
}
1321

14-
/// Append user agent info which will be includede in each API call.
22+
/// Append user agent to include into each API call.
23+
@available(*, deprecated, message: "Use `append(_ userAgentExtension: UserAgentExtending)` instead")
1524
public static func append(userAgent: UserAgent) {
16-
userAgents.append(userAgent)
25+
extensions.append(userAgent)
26+
}
27+
28+
/// Append user agent to include into each API call.
29+
public static func append(_ userAgentExtension: UserAgentExtending) {
30+
extensions.append(userAgentExtension)
1731
}
1832

1933
}
34+
35+
public protocol UserAgentExtending {
36+
37+
var userAgentExtension: String { get }
38+
39+
}
40+

Sources/AlgoliaSearchClient/Transport/HTTP/HTTPRequestBuilder.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ class HTTPRequestBuilder {
3131

3232
let timeout = command.requestOptions?.timeout(for: command.callType) ?? configuration.timeout(for: command.callType)
3333
var request = URLRequest(command: command).setIfNotNil(\.credentials, to: credentials)
34-
let userAgentsValue = UserAgentController.userAgents.map(\.description).joined(separator: "; ")
35-
request.addValue(userAgentsValue, forHTTPHeaderField: HTTPHeaderKey.userAgent.rawValue)
34+
request.addValue(UserAgentController.httpHeaderValue, forHTTPHeaderField: HTTPHeaderKey.userAgent.rawValue)
3635
return HTTPRequest(requester: requester,
3736
retryStrategy: retryStrategy,
3837
request: request,

0 commit comments

Comments
 (0)