Skip to content

Commit 6bb72dd

Browse files
emyllerclaude
andauthored
feat: Send a standard User-Agent: sdk-name/version header (#104)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c5d8181 commit 6bb72dd

4 files changed

Lines changed: 13 additions & 1 deletion

File tree

FlagsmithClient/Classes/Internal/Router.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ import Foundation
1111
#endif
1212

1313
enum Router: Sendable {
14+
// x-release-please-start-version
15+
private static let sdkVersion = "3.9.0"
16+
// x-release-please-end
17+
static let userAgent = "flagsmith-swift-ios-sdk/\(sdkVersion)"
18+
1419
private enum HTTPMethod: String {
1520
case get = "GET"
1621
case post = "POST"
@@ -102,6 +107,7 @@ enum Router: Sendable {
102107
}
103108
request.addValue(apiKey, forHTTPHeaderField: "X-Environment-Key")
104109
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
110+
request.addValue(Router.userAgent, forHTTPHeaderField: "User-Agent")
105111

106112
return request
107113
}

FlagsmithClient/Classes/Internal/SSEManager.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ final class SSEManager: NSObject, URLSessionDataDelegate, @unchecked Sendable {
157157
request.setValue("text/event-stream, application/json; charset=utf-8", forHTTPHeaderField: "Accept")
158158
request.setValue("no-cache", forHTTPHeaderField: "Cache-Control")
159159
request.setValue("keep-alive", forHTTPHeaderField: "Connection")
160+
request.setValue(Router.userAgent, forHTTPHeaderField: "User-Agent")
160161

161162
completionHandler = completion
162163
dataTask = session.dataTask(with: request)

FlagsmithClient/Tests/RouterTests.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ final class RouterTests: FlagsmithClientTestCase {
2020
XCTAssertEqual(request.url?.absoluteString, "https://edge.api.flagsmith.com/api/v1/flags/")
2121
XCTAssertTrue(request.allHTTPHeaderFields?.contains(where: { $0.key == "X-Environment-Key" }) ?? false)
2222
XCTAssertNil(request.httpBody)
23+
// x-release-please-start-version
24+
XCTAssertEqual(request.allHTTPHeaderFields?["User-Agent"], "flagsmith-swift-ios-sdk/3.9.0")
25+
// x-release-please-end
2326
}
2427

2528
func testGetIdentityRequest() throws {

release-please-config.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
"prerelease": false,
1111
"include-component-in-tag": false,
1212
"extra-files": [
13-
"FlagsmithClient.podspec"
13+
"FlagsmithClient.podspec",
14+
"FlagsmithClient/Classes/Internal/Router.swift",
15+
"FlagsmithClient/Tests/RouterTests.swift"
1416
]
1517
}
1618
},

0 commit comments

Comments
 (0)