validateMetadata method

void validateMetadata(
  1. RpcMetadata metadata
)

Best-effort metadata validation. Throws ArgumentError on violations.

Implementation

void validateMetadata(RpcMetadata metadata) {
  if (metadata.headers.length > maxHeaders) {
    throw ArgumentError(
      'Too many metadata headers: ${metadata.headers.length} > $maxHeaders',
    );
  }
  for (final header in metadata.headers) {
    if (!isValidHeaderName(header.name)) {
      throw ArgumentError('Invalid metadata header name: ${header.name}');
    }
    if (!isValidHeaderValue(header.value)) {
      throw ArgumentError(
        'Invalid metadata header value for: ${header.name}',
      );
    }
  }

  final methodPath = metadata.methodPath;
  if (!isValidMethodPath(methodPath)) {
    throw ArgumentError('Invalid methodPath in metadata: $methodPath');
  }
}