Skip to content

Commit f33c9fe

Browse files
authored
feat: Add standard client headers (#1130)
* feat: add standard client headers * verify if isn't web
1 parent 26c06c9 commit f33c9fe

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed
+15-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
import 'package:supabase/src/version.dart';
2+
import 'dart:io' show Platform;
3+
4+
const bool kIsWeb = bool.fromEnvironment('dart.library.js_util');
25

36
class Constants {
4-
static const Map<String, String> defaultHeaders = {
7+
static String? get platform {
8+
return kIsWeb ? null : Platform.operatingSystem;
9+
}
10+
11+
static String? get platformVersion {
12+
return kIsWeb ? null : Platform.operatingSystemVersion;
13+
}
14+
15+
static final Map<String, String> defaultHeaders = {
516
'X-Client-Info': 'supabase-dart/$version',
17+
if (platform != null) 'X-Supabase-Client-Platform': platform!,
18+
if (platformVersion != null)
19+
'X-Supabase-Client-Platform-Version': platformVersion!,
620
};
721
}

packages/supabase/test/client_test.dart

+45
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,51 @@ void main() {
3535
await supabase.dispose();
3636
});
3737

38+
test('X-Supabase-Client-Platform header is set properly', () {
39+
expect(supabase.headers['X-Supabase-Client-Platform'],
40+
Platform.operatingSystem);
41+
expect(supabase.headers['X-Supabase-Client-Platform-Version'],
42+
Platform.operatingSystemVersion);
43+
});
44+
test('X-Supabase-Client-Platform header is set properly on auth', () {
45+
expect(supabase.auth.headers['X-Supabase-Client-Platform'],
46+
Platform.operatingSystem);
47+
expect(supabase.auth.headers['X-Supabase-Client-Platform-Version'],
48+
Platform.operatingSystemVersion);
49+
});
50+
51+
test('X-Supabase-Client-Platform header is set properly on storage', () {
52+
expect(supabase.storage.headers['X-Supabase-Client-Platform'],
53+
Platform.operatingSystem);
54+
expect(supabase.storage.headers['X-Supabase-Client-Platform-Version'],
55+
Platform.operatingSystemVersion);
56+
});
57+
58+
test('X-Supabase-Client-Platform header is set properly on functions', () {
59+
expect(supabase.functions.headers['X-Supabase-Client-Platform'],
60+
Platform.operatingSystem);
61+
expect(supabase.functions.headers['X-Supabase-Client-Platform-Version'],
62+
Platform.operatingSystemVersion);
63+
});
64+
65+
test('X-Supabase-Client-Platform header is set properly on rest', () {
66+
expect(supabase.rest.headers['X-Supabase-Client-Platform'],
67+
Platform.operatingSystem);
68+
expect(supabase.rest.headers['X-Supabase-Client-Platform-Version'],
69+
Platform.operatingSystemVersion);
70+
});
71+
72+
test('X-Supabase-Client-Platform header is set properly on realtime',
73+
() async {
74+
final request = await getRealtimeRequest(
75+
server: mockServer,
76+
supabaseClient: supabase,
77+
);
78+
expect(request.headers['X-Supabase-Client-Platform']?.first,
79+
Platform.operatingSystem);
80+
expect(request.headers['X-Supabase-Client-Platform-Version']?.first,
81+
Platform.operatingSystemVersion);
82+
});
3883
test('X-Client-Info header is set properly on realtime', () async {
3984
final request = await getRealtimeRequest(
4085
server: mockServer,

0 commit comments

Comments
 (0)