Skip to content

Commit 3bcd1e0

Browse files
emyllerclaude
andcommitted
feat: add User-Agent header with SDK version
Implements User-Agent header in all HTTP requests with format: flagsmith-flutter-sdk/<version> The version is automatically updated by release-please via the extra-files configuration. Closes #82 Co-authored-by: Claude <claude@anthropic.com>
1 parent fd0ffeb commit 3bcd1e0

File tree

4 files changed

+54
-1
lines changed

4 files changed

+54
-1
lines changed

lib/src/flagsmith_client.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:flutter_client_sse/flutter_client_sse.dart';
88
import 'package:rxdart/subjects.dart';
99

1010
import '../flagsmith.dart';
11+
import 'version.dart';
1112

1213
/// Flagsmith client initialization
1314
///
@@ -233,6 +234,7 @@ class FlagsmithClient {
233234
var dio = Dio(config.clientOptions)
234235
..options.headers[authHeader] = apiKey
235236
..options.headers[acceptHeader] = applicationJson
237+
..options.headers[userAgentHeader] = getUserAgent()
236238
..options.followRedirects = true;
237239

238240
if (config.isDebug) {

lib/src/version.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// This file contains the SDK version information
2+
// The version is automatically updated by release-please
3+
4+
/// The SDK version
5+
// x-release-please-start-version
6+
const String sdkVersion = '6.0.3';
7+
// x-release-please-end
8+
9+
/// Gets the User-Agent header value for the SDK
10+
///
11+
/// Format: flagsmith-flutter-sdk/<version>
12+
String getUserAgent() {
13+
return 'flagsmith-flutter-sdk/$sdkVersion';
14+
}

release-please-config.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
"bump-patch-for-minor-pre-major": false,
99
"draft": false,
1010
"prerelease": false,
11-
"include-component-in-tag": false
11+
"include-component-in-tag": false,
12+
"extra-files": [
13+
"lib/src/version.dart",
14+
"test/fg/flagsmith_user_agent_test.dart"
15+
]
1216
}
1317
},
1418
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import 'package:flagsmith/flagsmith.dart';
2+
import 'package:test/test.dart';
3+
import '../shared.dart';
4+
5+
void main() {
6+
late FlagsmithClient fs;
7+
8+
group('[User-Agent Header]', () {
9+
setUp(() async {
10+
fs = await setupClientAdapter(
11+
StorageType.inMemory,
12+
isDebug: false,
13+
);
14+
});
15+
16+
tearDown(() {
17+
fs.close();
18+
});
19+
20+
test('Should set User-Agent header with correct SDK version', () {
21+
// x-release-please-start-version
22+
final expectedVersion = '6.0.3';
23+
// x-release-please-end
24+
25+
final userAgent = fs.client.options.headers[FlagsmithClient.userAgentHeader];
26+
final expectedUserAgent = 'flagsmith-flutter-sdk/$expectedVersion';
27+
28+
expect(userAgent, isNotNull, reason: 'User-Agent header should be set');
29+
expect(userAgent, equals(expectedUserAgent),
30+
reason: 'User-Agent should be flagsmith-flutter-sdk/$expectedVersion');
31+
});
32+
});
33+
}

0 commit comments

Comments
 (0)