parameterize method

  1. @override
Future<ParameterizeResponse> parameterize(
  1. ServiceCall call,
  2. ParameterizeRequest request
)

Implementation

@override
Future<providerpb.ParameterizeResponse> parameterize(
  ServiceCall call,
  providerpb.ParameterizeRequest request,
) async {
  if (request.hasArgs()) {
    try {
      final result = await provider.parameterizeArgs(request.args.args);
      return providerpb.ParameterizeResponse(
        name: result.name,
        version: result.version,
      );
    } on UnsupportedProviderOperationError catch (error) {
      throw GrpcError.unimplemented(error.toString());
    }
  }

  if (request.hasValue()) {
    final decodedValue = (() {
      try {
        return utf8.decode(request.value.value);
      } on FormatException {
        throw GrpcError.invalidArgument(
          'parameterization value is not valid UTF-8',
        );
      }
    })();
    try {
      final result = await provider.parameterizeValue(
        request.value.name,
        request.value.version,
        decodedValue,
      );
      return providerpb.ParameterizeResponse(
        name: result.name,
        version: result.version,
      );
    } on UnsupportedProviderOperationError catch (error) {
      throw GrpcError.unimplemented(error.toString());
    }
  }

  throw GrpcError.invalidArgument('parameterization payload is missing');
}