You've already forked flutter-rp-example
First commit
This commit is contained in:
31
lib/services/grpc_service.dart
Normal file
31
lib/services/grpc_service.dart
Normal file
@@ -0,0 +1,31 @@
|
||||
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]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user