diff --git a/lib/src/flagsmith_client.dart b/lib/src/flagsmith_client.dart index 2078ee7..3a2c4bb 100644 --- a/lib/src/flagsmith_client.dart +++ b/lib/src/flagsmith_client.dart @@ -8,6 +8,7 @@ import 'package:flutter_client_sse/flutter_client_sse.dart'; import 'package:rxdart/subjects.dart'; import '../flagsmith.dart'; +import 'version.dart'; /// Flagsmith client initialization /// @@ -233,6 +234,7 @@ class FlagsmithClient { var dio = Dio(config.clientOptions) ..options.headers[authHeader] = apiKey ..options.headers[acceptHeader] = applicationJson + ..options.headers[userAgentHeader] = getUserAgent() ..options.followRedirects = true; if (config.isDebug) { diff --git a/lib/src/version.dart b/lib/src/version.dart new file mode 100644 index 0000000..c8aad0c --- /dev/null +++ b/lib/src/version.dart @@ -0,0 +1,14 @@ +// This file contains the SDK version information +// The version is automatically updated by release-please + +/// The SDK version +// x-release-please-start-version +const String sdkVersion = '6.0.3'; +// x-release-please-end + +/// Gets the User-Agent header value for the SDK +/// +/// Format: flagsmith-flutter-sdk/ +String getUserAgent() { + return 'flagsmith-flutter-sdk/$sdkVersion'; +} diff --git a/release-please-config.json b/release-please-config.json index 5773d8d..a41cc74 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -8,7 +8,11 @@ "bump-patch-for-minor-pre-major": false, "draft": false, "prerelease": false, - "include-component-in-tag": false + "include-component-in-tag": false, + "extra-files": [ + "lib/src/version.dart", + "test/fg/flagsmith_user_agent_test.dart" + ] } }, "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", diff --git a/test/fg/flagsmith_user_agent_test.dart b/test/fg/flagsmith_user_agent_test.dart new file mode 100644 index 0000000..5c3825f --- /dev/null +++ b/test/fg/flagsmith_user_agent_test.dart @@ -0,0 +1,33 @@ +import 'package:flagsmith/flagsmith.dart'; +import 'package:test/test.dart'; +import '../shared.dart'; + +void main() { + late FlagsmithClient fs; + + group('[User-Agent Header]', () { + setUp(() async { + fs = await setupClientAdapter( + StorageType.inMemory, + isDebug: false, + ); + }); + + tearDown(() { + fs.close(); + }); + + test('Should set User-Agent header with correct SDK version', () { + // x-release-please-start-version + final expectedVersion = '6.0.3'; + // x-release-please-end + + final userAgent = fs.client.options.headers[FlagsmithClient.userAgentHeader]; + final expectedUserAgent = 'flagsmith-flutter-sdk/$expectedVersion'; + + expect(userAgent, isNotNull, reason: 'User-Agent header should be set'); + expect(userAgent, equals(expectedUserAgent), + reason: 'User-Agent should be flagsmith-flutter-sdk/$expectedVersion'); + }); + }); +}