From 659beea94d109b53a163f6cf1722041336c275a3 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Wed, 12 Mar 2025 15:50:54 +0100 Subject: [PATCH 1/2] feat: add standard client headers --- packages/supabase/lib/src/constants.dart | 13 ++++++- packages/supabase/test/client_test.dart | 45 ++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/packages/supabase/lib/src/constants.dart b/packages/supabase/lib/src/constants.dart index bd464c1d..d23d5396 100644 --- a/packages/supabase/lib/src/constants.dart +++ b/packages/supabase/lib/src/constants.dart @@ -1,7 +1,18 @@ import 'package:supabase/src/version.dart'; +import 'dart:io' show Platform; class Constants { - static const Map defaultHeaders = { + static String get platform { + return Platform.operatingSystem; + } + + static String get platformVersion { + return Platform.operatingSystemVersion; + } + + static final Map defaultHeaders = { 'X-Client-Info': 'supabase-dart/$version', + 'X-Supabase-Client-Platform': platform, + 'X-Supabase-Client-Platform-Version': platformVersion, }; } diff --git a/packages/supabase/test/client_test.dart b/packages/supabase/test/client_test.dart index 36f0c03d..7db3f47c 100644 --- a/packages/supabase/test/client_test.dart +++ b/packages/supabase/test/client_test.dart @@ -35,6 +35,51 @@ void main() { await supabase.dispose(); }); + test('X-Supabase-Client-Platform header is set properly', () { + expect(supabase.headers['X-Supabase-Client-Platform'], + Platform.operatingSystem); + expect(supabase.headers['X-Supabase-Client-Platform-Version'], + Platform.operatingSystemVersion); + }); + test('X-Supabase-Client-Platform header is set properly on auth', () { + expect(supabase.auth.headers['X-Supabase-Client-Platform'], + Platform.operatingSystem); + expect(supabase.auth.headers['X-Supabase-Client-Platform-Version'], + Platform.operatingSystemVersion); + }); + + test('X-Supabase-Client-Platform header is set properly on storage', () { + expect(supabase.storage.headers['X-Supabase-Client-Platform'], + Platform.operatingSystem); + expect(supabase.storage.headers['X-Supabase-Client-Platform-Version'], + Platform.operatingSystemVersion); + }); + + test('X-Supabase-Client-Platform header is set properly on functions', () { + expect(supabase.functions.headers['X-Supabase-Client-Platform'], + Platform.operatingSystem); + expect(supabase.functions.headers['X-Supabase-Client-Platform-Version'], + Platform.operatingSystemVersion); + }); + + test('X-Supabase-Client-Platform header is set properly on rest', () { + expect(supabase.rest.headers['X-Supabase-Client-Platform'], + Platform.operatingSystem); + expect(supabase.rest.headers['X-Supabase-Client-Platform-Version'], + Platform.operatingSystemVersion); + }); + + test('X-Supabase-Client-Platform header is set properly on realtime', + () async { + final request = await getRealtimeRequest( + server: mockServer, + supabaseClient: supabase, + ); + expect(request.headers['X-Supabase-Client-Platform']?.first, + Platform.operatingSystem); + expect(request.headers['X-Supabase-Client-Platform-Version']?.first, + Platform.operatingSystemVersion); + }); test('X-Client-Info header is set properly on realtime', () async { final request = await getRealtimeRequest( server: mockServer, From b0af382c39ac03596363dc6f51419841ff9c222d Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Mon, 7 Apr 2025 11:29:34 -0300 Subject: [PATCH 2/2] verify if isn't web --- packages/supabase/lib/src/constants.dart | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/supabase/lib/src/constants.dart b/packages/supabase/lib/src/constants.dart index d23d5396..ab0e7105 100644 --- a/packages/supabase/lib/src/constants.dart +++ b/packages/supabase/lib/src/constants.dart @@ -1,18 +1,21 @@ import 'package:supabase/src/version.dart'; import 'dart:io' show Platform; +const bool kIsWeb = bool.fromEnvironment('dart.library.js_util'); + class Constants { - static String get platform { - return Platform.operatingSystem; + static String? get platform { + return kIsWeb ? null : Platform.operatingSystem; } - static String get platformVersion { - return Platform.operatingSystemVersion; + static String? get platformVersion { + return kIsWeb ? null : Platform.operatingSystemVersion; } static final Map defaultHeaders = { 'X-Client-Info': 'supabase-dart/$version', - 'X-Supabase-Client-Platform': platform, - 'X-Supabase-Client-Platform-Version': platformVersion, + if (platform != null) 'X-Supabase-Client-Platform': platform!, + if (platformVersion != null) + 'X-Supabase-Client-Platform-Version': platformVersion!, }; }