diff --git a/google/api_core/gapic_v1/__init__.py b/google/api_core/gapic_v1/__init__.py index e5b7ad352..a8867df8b 100644 --- a/google/api_core/gapic_v1/__init__.py +++ b/google/api_core/gapic_v1/__init__.py @@ -18,6 +18,7 @@ from google.api_core.gapic_v1 import method from google.api_core.gapic_v1 import method_async from google.api_core.gapic_v1 import routing_header +from google.api_core.gapic_v1 import version_header __all__ = [ "client_info", @@ -26,4 +27,5 @@ "method", "method_async", "routing_header", + "version_header", ] diff --git a/google/api_core/gapic_v1/version_header.py b/google/api_core/gapic_v1/version_header.py new file mode 100644 index 000000000..3285286ea --- /dev/null +++ b/google/api_core/gapic_v1/version_header.py @@ -0,0 +1,29 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +API_VERSION_METADATA_KEY = "x-goog-api-version" + + +def to_grpc_metadata(version_identifier): + """Returns the gRPC metadata containing the API Version header for the given + `version_identifier`. + + Args: + version_identifier (str): The version identifier to be sent via metadata. + + Returns: + Tuple(str, str): The gRPC metadata containing the API Version metadata key + and value. + """ + return (API_VERSION_METADATA_KEY, version_identifier) diff --git a/tests/unit/gapic/test_version_header.py b/tests/unit/gapic/test_version_header.py new file mode 100644 index 000000000..381884115 --- /dev/null +++ b/tests/unit/gapic/test_version_header.py @@ -0,0 +1,28 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest + +try: + import grpc # noqa: F401 +except ImportError: + pytest.skip("No GRPC", allow_module_level=True) + +from google.api_core.gapic_v1 import version_header + + +@pytest.mark.parametrize("version_identifier", ["some_value", ""]) +def test_version_header_to_grpc_metadata(version_identifier): + value = version_header.to_grpc_metadata(version_identifier) + assert value == (version_header.API_VERSION_METADATA_KEY, version_identifier)