# 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 episode_pb2 as yandex_dot_cloud_dot_video_dot_v1_dot_episode__pb2
from yandex.cloud.video.v1 import episode_service_pb2 as yandex_dot_cloud_dot_video_dot_v1_dot_episode__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/episode_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 EpisodeServiceStub(object):
    """Episode management service.
    Provides methods for creating, retrieving, updating, and deleting episodes,
    which represent specific time segments of streams
    that can be individually accessed, managed, and published.
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.Get = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/Get',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__pb2.Episode.FromString,
                _registered_method=True)
        self.List = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/List',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.ListEpisodesRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.ListEpisodesResponse.FromString,
                _registered_method=True)
        self.BatchGet = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/BatchGet',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchGetEpisodesRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchGetEpisodesResponse.FromString,
                _registered_method=True)
        self.Create = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/Create',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.CreateEpisodeRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
                _registered_method=True)
        self.Update = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/Update',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.UpdateEpisodeRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
                _registered_method=True)
        self.Delete = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/Delete',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.DeleteEpisodeRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
                _registered_method=True)
        self.BatchDelete = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/BatchDelete',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchDeleteEpisodesRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
                _registered_method=True)
        self.PerformAction = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/PerformAction',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.PerformEpisodeActionRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.FromString,
                _registered_method=True)
        self.GetPlayerURL = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/GetPlayerURL',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodePlayerURLRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodePlayerURLResponse.FromString,
                _registered_method=True)
        self.GetManifests = channel.unary_unary(
                '/yandex.cloud.video.v1.EpisodeService/GetManifests',
                request_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeManifestsRequest.SerializeToString,
                response_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeManifestsResponse.FromString,
                _registered_method=True)


class EpisodeServiceServicer(object):
    """Episode management service.
    Provides methods for creating, retrieving, updating, and deleting episodes,
    which represent specific time segments of streams
    that can be individually accessed, managed, and published.
    """

    def Get(self, request, context):
        """Retrieves detailed information about a specific episode by its ID.
        Returns all episode metadata, status, 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 episodes associated with a specific stream or stream line with pagination support.
        Results can be filtered and sorted using the provided parameters.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def BatchGet(self, request, context):
        """Retrieves multiple episodes by their IDs in a specific channel in a single request.
        This is more efficient than making multiple Get requests when retrieving several episodes.
        """
        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 episode associated with a stream or stream line.
        Episodes can be configured with various settings including title, description,
        time boundaries, and access rights.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Update(self, request, context):
        """Updates an existing episode's metadata and settings.
        Only fields specified in the field_mask will be updated.
        """
        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 episode by its ID.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def BatchDelete(self, request, context):
        """Deletes multiple episodes associated with a specific stream or stream line in a single request.
        This is more efficient than making multiple Delete requests when removing several episodes.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def PerformAction(self, request, context):
        """Performs a specific action on an episode, such as publishing or unpublishing.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetPlayerURL(self, request, context):
        """Generates a player URL for watching the episode.
        The URL can include player parameters such as autoplay, mute, and visibility of interface controls.
        For episodes with signed URL access, an expiration duration can be specified.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetManifests(self, request, context):
        """Retrieves the manifest URLs for the episode's media content.
        Manifests provide players with necessary information
        for streaming the content with different quality levels and formats.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_EpisodeServiceServicer_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_episode__service__pb2.GetEpisodeRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__pb2.Episode.SerializeToString,
            ),
            'List': grpc.unary_unary_rpc_method_handler(
                    servicer.List,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.ListEpisodesRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.ListEpisodesResponse.SerializeToString,
            ),
            'BatchGet': grpc.unary_unary_rpc_method_handler(
                    servicer.BatchGet,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchGetEpisodesRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchGetEpisodesResponse.SerializeToString,
            ),
            'Create': grpc.unary_unary_rpc_method_handler(
                    servicer.Create,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.CreateEpisodeRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.SerializeToString,
            ),
            'Update': grpc.unary_unary_rpc_method_handler(
                    servicer.Update,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.UpdateEpisodeRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.SerializeToString,
            ),
            'Delete': grpc.unary_unary_rpc_method_handler(
                    servicer.Delete,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.DeleteEpisodeRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.SerializeToString,
            ),
            'BatchDelete': grpc.unary_unary_rpc_method_handler(
                    servicer.BatchDelete,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchDeleteEpisodesRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.SerializeToString,
            ),
            'PerformAction': grpc.unary_unary_rpc_method_handler(
                    servicer.PerformAction,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.PerformEpisodeActionRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_operation_dot_operation__pb2.Operation.SerializeToString,
            ),
            'GetPlayerURL': grpc.unary_unary_rpc_method_handler(
                    servicer.GetPlayerURL,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodePlayerURLRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodePlayerURLResponse.SerializeToString,
            ),
            'GetManifests': grpc.unary_unary_rpc_method_handler(
                    servicer.GetManifests,
                    request_deserializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeManifestsRequest.FromString,
                    response_serializer=yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeManifestsResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'yandex.cloud.video.v1.EpisodeService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('yandex.cloud.video.v1.EpisodeService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class EpisodeService(object):
    """Episode management service.
    Provides methods for creating, retrieving, updating, and deleting episodes,
    which represent specific time segments of streams
    that can be individually accessed, managed, and published.
    """

    @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.EpisodeService/Get',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__pb2.Episode.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.EpisodeService/List',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.ListEpisodesRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.ListEpisodesResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def BatchGet(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.EpisodeService/BatchGet',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchGetEpisodesRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchGetEpisodesResponse.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.EpisodeService/Create',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.CreateEpisodeRequest.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 Update(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.EpisodeService/Update',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.UpdateEpisodeRequest.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 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.EpisodeService/Delete',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.DeleteEpisodeRequest.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 BatchDelete(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.EpisodeService/BatchDelete',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.BatchDeleteEpisodesRequest.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 PerformAction(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.EpisodeService/PerformAction',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.PerformEpisodeActionRequest.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 GetPlayerURL(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.EpisodeService/GetPlayerURL',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodePlayerURLRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodePlayerURLResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetManifests(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.EpisodeService/GetManifests',
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeManifestsRequest.SerializeToString,
            yandex_dot_cloud_dot_video_dot_v1_dot_episode__service__pb2.GetEpisodeManifestsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
