# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import warnings

from yandex.cloud.operation import operation_pb2 as yandex_dot_cloud_dot_operation_dot_operation__pb2
from yandex.cloud.video.v1 import thumbnail_pb2 as yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__pb2
from yandex.cloud.video.v1 import thumbnail_service_pb2 as yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2

GRPC_GENERATED_VERSION = '1.70.0'
GRPC_VERSION = grpc.__version__
_version_not_supported = False

try:
    from grpc._utilities import first_version_is_lower
    _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
except ImportError:
    _version_not_supported = True

if _version_not_supported:
    raise RuntimeError(
        f'The grpc package installed is at version {GRPC_VERSION},'
        + f' but the generated code in yandex/cloud/video/v1/thumbnail_service_pb2_grpc.py depends on'
        + f' grpcio>={GRPC_GENERATED_VERSION}.'
        + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
        + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
    )


class ThumbnailServiceStub(object):
    """Thumbnail management service.
    Provides methods for creating, retrieving, and managing thumbnail images
    that can be associated with various resources such as videos, streams, episodes, and channels.
    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.Get = channel.unary_unary(
                '/yandex.cloud.video.v1.ThumbnailService/Get',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GetThumbnailRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__pb2.Thumbnail.FromString,
                _registered_method=True)
        self.List = channel.unary_unary(
                '/yandex.cloud.video.v1.ThumbnailService/List',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.ListThumbnailRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.ListThumbnailResponse.FromString,
                _registered_method=True)
        self.Create = channel.unary_unary(
                '/yandex.cloud.video.v1.ThumbnailService/Create',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.CreateThumbnailRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
                _registered_method=True)
        self.BatchGenerateDownloadURLs = channel.unary_unary(
                '/yandex.cloud.video.v1.ThumbnailService/BatchGenerateDownloadURLs',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.BatchGenerateDownloadURLsRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.BatchGenerateDownloadURLsResponse.FromString,
                _registered_method=True)
        self.GenerateUploadURL = channel.unary_unary(
                '/yandex.cloud.video.v1.ThumbnailService/GenerateUploadURL',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GenerateThumbnailUploadURLRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GenerateThumbnailUploadURLResponse.FromString,
                _registered_method=True)
        self.Delete = channel.unary_unary(
                '/yandex.cloud.video.v1.ThumbnailService/Delete',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.DeleteThumbnailRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
                _registered_method=True)


class ThumbnailServiceServicer(object):
    """Thumbnail management service.
    Provides methods for creating, retrieving, and managing thumbnail images
    that can be associated with various resources such as videos, streams, episodes, and channels.
    """

    def Get(self, request, context):
        """Retrieves detailed information about a specific thumbnail by its ID.
        Returns all thumbnail metadata and related information.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def List(self, request, context):
        """Lists all thumbnails associated with a specific resource (channel, stream, video, etc.)
        with pagination support.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Create(self, request, context):
        """Creates a new thumbnail record for a specific resource.
        This method only creates the metadata record; the actual image must be uploaded
        using the URL obtained from the GenerateUploadURL method.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def BatchGenerateDownloadURLs(self, request, context):
        """Generates download URLs for multiple thumbnails in a single request.
        The response includes URLs for both original and scaled versions of each thumbnail.
        This is useful for efficiently retrieving multiple thumbnails at once.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GenerateUploadURL(self, request, context):
        """Generates a URL for uploading an image to an existing thumbnail record.
        This URL can be used to upload the actual image file using an HTTP PUT request.
        The URL is pre-signed and has a limited validity period.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Delete(self, request, context):
        """Deletes a specific thumbnail by its ID.
        This removes both the metadata record and the associated image file.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_ThumbnailServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'Get': grpc.unary_unary_rpc_method_handler(
                    servicer.Get,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GetThumbnailRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__pb2.Thumbnail.SerializeToString,
            ),
            'List': grpc.unary_unary_rpc_method_handler(
                    servicer.List,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.ListThumbnailRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.ListThumbnailResponse.SerializeToString,
            ),
            'Create': grpc.unary_unary_rpc_method_handler(
                    servicer.Create,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.CreateThumbnailRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.SerializeToString,
            ),
            'BatchGenerateDownloadURLs': grpc.unary_unary_rpc_method_handler(
                    servicer.BatchGenerateDownloadURLs,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.BatchGenerateDownloadURLsRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.BatchGenerateDownloadURLsResponse.SerializeToString,
            ),
            'GenerateUploadURL': grpc.unary_unary_rpc_method_handler(
                    servicer.GenerateUploadURL,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GenerateThumbnailUploadURLRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GenerateThumbnailUploadURLResponse.SerializeToString,
            ),
            'Delete': grpc.unary_unary_rpc_method_handler(
                    servicer.Delete,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.DeleteThumbnailRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'yandex.cloud.video.v1.ThumbnailService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('yandex.cloud.video.v1.ThumbnailService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class ThumbnailService(object):
    """Thumbnail management service.
    Provides methods for creating, retrieving, and managing thumbnail images
    that can be associated with various resources such as videos, streams, episodes, and channels.
    """

    @staticmethod
    def Get(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/yandex.cloud.video.v1.ThumbnailService/Get',
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GetThumbnailRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__pb2.Thumbnail.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def List(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/yandex.cloud.video.v1.ThumbnailService/List',
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.ListThumbnailRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.ListThumbnailResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def Create(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/yandex.cloud.video.v1.ThumbnailService/Create',
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.CreateThumbnailRequest.SerializeToString,
            yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def BatchGenerateDownloadURLs(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/yandex.cloud.video.v1.ThumbnailService/BatchGenerateDownloadURLs',
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.BatchGenerateDownloadURLsRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.BatchGenerateDownloadURLsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GenerateUploadURL(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/yandex.cloud.video.v1.ThumbnailService/GenerateUploadURL',
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GenerateThumbnailUploadURLRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.GenerateThumbnailUploadURLResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def Delete(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/yandex.cloud.video.v1.ThumbnailService/Delete',
            yandex_dot_cloud_dot_video_dot_v1_dot_thumbnail__service__pb2.DeleteThumbnailRequest.SerializeToString,
            yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
