31 lines
1018 B
Dart
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]);
|
|
}
|
|
} |