# Copyright (C) 2017 Google Inc.
#
# 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.

"""Helper functions for the Google Assistant API."""

import logging

from google.assistant.embedded.v1alpha2 import embedded_assistant_pb2


def log_assist_request_without_audio(
    assist_request: embedded_assistant_pb2.AssistRequest,
) -> None:
    """Log AssistRequest fields without audio data."""
    if logging.getLogger().isEnabledFor(logging.DEBUG):
        resp_copy = embedded_assistant_pb2.AssistRequest()
        resp_copy.CopyFrom(assist_request)
        if len(resp_copy.audio_in) > 0:
            size = len(resp_copy.audio_in)
            resp_copy.ClearField("audio_in")
            logging.debug("AssistRequest: audio_in (%d bytes)", size)
            return
        logging.debug("AssistRequest: %s", resp_copy)


def log_assist_response_without_audio(
    assist_response: embedded_assistant_pb2.AssistResponse,
) -> None:
    """Log AssistResponse fields without audio data."""
    if logging.getLogger().isEnabledFor(logging.DEBUG):
        resp_copy = embedded_assistant_pb2.AssistResponse()
        resp_copy.CopyFrom(assist_response)
        has_audio_data = (
            resp_copy.HasField("audio_out") and len(resp_copy.audio_out.audio_data) > 0
        )
        if has_audio_data:
            size = len(resp_copy.audio_out.audio_data)
            resp_copy.audio_out.ClearField("audio_data")
            if resp_copy.audio_out.ListFields():
                logging.debug(
                    "AssistResponse: %s audio_data (%d bytes)", resp_copy, size
                )
            else:
                logging.debug("AssistResponse: audio_data (%d bytes)", size)
            return
        logging.debug("AssistResponse: %s", resp_copy)
