use a static map for additional headers
This commit is contained in:
@@ -25,6 +25,7 @@ import 'package:stream_chat/src/core/models/member.dart';
|
||||
import 'package:stream_chat/src/core/models/message.dart';
|
||||
import 'package:stream_chat/src/core/models/own_user.dart';
|
||||
import 'package:stream_chat/src/core/models/user.dart';
|
||||
import 'package:stream_chat/src/core/platform_detector/platform_detector.dart';
|
||||
import 'package:stream_chat/src/core/util/utils.dart';
|
||||
import 'package:stream_chat/src/db/chat_persistence_client.dart';
|
||||
import 'package:stream_chat/src/event_type.dart';
|
||||
@@ -126,6 +127,12 @@ class StreamChatClient {
|
||||
_originalChatPersistenceClient = value;
|
||||
}
|
||||
|
||||
static String defaultUserAgent = 'stream-chat-dart-client-'
|
||||
'${CurrentPlatform.name}-'
|
||||
'${PACKAGE_VERSION.split('+')[0]}';
|
||||
|
||||
static Map<String, Object?> additionalHeaders = {};
|
||||
|
||||
ChatPersistenceClient? _originalChatPersistenceClient;
|
||||
|
||||
/// Chat persistence client
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
|
||||
/// Interceptor that sets additional headers for all requests.
|
||||
class AdditionalHeadersInterceptor extends Interceptor {
|
||||
@override
|
||||
Future<void> onRequest(
|
||||
RequestOptions options,
|
||||
RequestInterceptorHandler handler,
|
||||
) async {
|
||||
options.headers = {
|
||||
...options.headers,
|
||||
...StreamChatClient.additionalHeaders,
|
||||
};
|
||||
return handler.next(options);
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:stream_chat/src/core/platform_detector/platform_detector.dart';
|
||||
import 'package:stream_chat/version.dart';
|
||||
|
||||
/// User agent interceptor that sets the user agent header
|
||||
class UserAgentInterceptor extends Interceptor {
|
||||
final _defaultUserAgent = 'stream-chat-dart-client-'
|
||||
'${CurrentPlatform.name}-'
|
||||
'${PACKAGE_VERSION.split('+')[0]}';
|
||||
|
||||
@override
|
||||
Future<void> onRequest(
|
||||
RequestOptions options,
|
||||
RequestInterceptorHandler handler,
|
||||
) async {
|
||||
options.headers['X-Stream-Client'] =
|
||||
'$_defaultUserAgent-${usedPackage.name}';
|
||||
return handler.next(options);
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import 'package:stream_chat/src/core/http/connection_id_manager.dart';
|
||||
import 'package:stream_chat/src/core/http/interceptor/auth_interceptor.dart';
|
||||
import 'package:stream_chat/src/core/http/interceptor/connection_id_interceptor.dart';
|
||||
import 'package:stream_chat/src/core/http/interceptor/logging_interceptor.dart';
|
||||
import 'package:stream_chat/src/core/http/interceptor/user_agent_interceptor.dart';
|
||||
import 'package:stream_chat/src/core/http/interceptor/additional_headers_interceptor.dart';
|
||||
import 'package:stream_chat/src/core/http/stream_chat_dio_error.dart';
|
||||
import 'package:stream_chat/src/core/http/token_manager.dart';
|
||||
import 'package:stream_chat/src/location.dart';
|
||||
@@ -42,7 +42,7 @@ class StreamHttpClient {
|
||||
..._options.headers,
|
||||
}
|
||||
..interceptors.addAll([
|
||||
UserAgentInterceptor(),
|
||||
AdditionalHeadersInterceptor(),
|
||||
if (tokenManager != null) AuthInterceptor(this, tokenManager),
|
||||
if (connectionIdManager != null)
|
||||
ConnectionIdInterceptor(connectionIdManager),
|
||||
|
||||
@@ -1,22 +1,10 @@
|
||||
import 'package:stream_chat/src/client/client.dart';
|
||||
import 'package:stream_chat/src/core/platform_detector/platform_detector.dart';
|
||||
|
||||
/// Current package version
|
||||
/// Used in [StreamChatClient] to build the `x-stream-client` header
|
||||
// ignore: constant_identifier_names
|
||||
const PACKAGE_VERSION = '3.2.0';
|
||||
|
||||
/// Default user agent used for the 'x-stream-client' header
|
||||
final defaultUserAgent = 'stream-chat-dart-client-'
|
||||
'${CurrentPlatform.name}-'
|
||||
'${PACKAGE_VERSION.split('+')[0]}';
|
||||
|
||||
/// Current used package
|
||||
/// This is used to set the `x-stream-client` header using info about
|
||||
/// the package in use
|
||||
/// For example: llc/core/ui
|
||||
Package usedPackage = Package.llc;
|
||||
|
||||
/// Possible packages
|
||||
enum Package {
|
||||
/// The Low Level Client
|
||||
|
||||
Reference in New Issue
Block a user