flutter-rp-example/lib/services/grpc_service.dart
Nathan SOULIER fff5617757 First commit
2025-03-24 10:12:56 +01:00

31 lines
1018 B
Dart

import 'package:grpc/grpc.dart';
import 'package:sampleapp/services/auth/auth.dart';
class AuthInterceptor extends ClientInterceptor {
final AuthService authService;
AuthInterceptor(this.authService);
@override
ResponseFuture<R> interceptUnary<Q, R>(
ClientMethod<Q, R> method, Q request, CallOptions options, invoker) {
final metadata = <String, String>{};
metadata['authorization'] = 'Bearer ${authService.accessToken}';
options = options.mergedWith(CallOptions(metadata: metadata));
return invoker(method, request, options);
}
}
class GrpcClient {
static Client initializeClient(AuthService authService, String host, int port, Client Function(ClientChannel, List<ClientInterceptor>) clientFactory) {
final interceptor = AuthInterceptor(authService);
final channel = ClientChannel(
host,
port: port,
options: const ChannelOptions(
credentials: ChannelCredentials.secure(),
),
);
return clientFactory(channel, [interceptor]);
}
}