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

from terrascope_api.models import aoi_collection_pb2 as aoi__collection__pb2


class AOICollectionApiStub(object):
    """Missing associated documentation comment in .proto file."""

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

        Args:
            channel: A grpc.Channel.
        """
        self.create = channel.unary_unary(
                '/oi.papi.AOICollectionApi/create',
                request_serializer=aoi__collection__pb2.AOICollectionCreateRequest.SerializeToString,
                response_deserializer=aoi__collection__pb2.AOICollectionCreateResponse.FromString,
                )
        self.get = channel.unary_unary(
                '/oi.papi.AOICollectionApi/get',
                request_serializer=aoi__collection__pb2.AOICollectionGetRequest.SerializeToString,
                response_deserializer=aoi__collection__pb2.AOICollectionGetResponse.FromString,
                )
        self.clone = channel.unary_unary(
                '/oi.papi.AOICollectionApi/clone',
                request_serializer=aoi__collection__pb2.AOICollectionCloneRequest.SerializeToString,
                response_deserializer=aoi__collection__pb2.AOICollectionCloneResponse.FromString,
                )
        self.add = channel.unary_unary(
                '/oi.papi.AOICollectionApi/add',
                request_serializer=aoi__collection__pb2.AOICollectionAddRequest.SerializeToString,
                response_deserializer=aoi__collection__pb2.AOICollectionAddResponse.FromString,
                )
        self.remove = channel.unary_unary(
                '/oi.papi.AOICollectionApi/remove',
                request_serializer=aoi__collection__pb2.AOICollectionRemoveRequest.SerializeToString,
                response_deserializer=aoi__collection__pb2.AOICollectionRemoveResponse.FromString,
                )
        self.list = channel.unary_unary(
                '/oi.papi.AOICollectionApi/list',
                request_serializer=aoi__collection__pb2.AOICollectionListRequest.SerializeToString,
                response_deserializer=aoi__collection__pb2.AOICollectionListResponse.FromString,
                )


class AOICollectionApiServicer(object):
    """Missing associated documentation comment in .proto file."""

    def create(self, request, context):
        """
        Create an AOICollection to house AOIs.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def get(self, request, context):
        """
        Get the metadata about the AOICollection and the AOIs that belong to the specified AOICollection.
        Setting the verbose flag will also include the bytes in wkt format describing the geometry.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def clone(self, request, context):
        """
        Creates a copy of the provided AOICollection resulting in a new AOICollection which is not associated with the original in any way.
        This is a shallow copy, only the pointers to the underlying aoi_id and aoi_versions are copied, but the underlying AOIs remain the same between both collections.
        Once an AOICollection is cloned and a new AOICollection is created, the new AOICollection can be modified before it is used as part of a computation.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def add(self, request, context):
        """
        Add AOI's to a given AOICollection. Cannot add to a "locked" AOICollection.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def remove(self, request, context):
        """
        Remove AOI's from a given AOICollection (AOI's must be part of that collection). Cannot remove from a "locked" collection.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def list(self, request, context):
        """
        Returns the list of all AOICollections that the requester has access to.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_AOICollectionApiServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'create': grpc.unary_unary_rpc_method_handler(
                    servicer.create,
                    request_deserializer=aoi__collection__pb2.AOICollectionCreateRequest.FromString,
                    response_serializer=aoi__collection__pb2.AOICollectionCreateResponse.SerializeToString,
            ),
            'get': grpc.unary_unary_rpc_method_handler(
                    servicer.get,
                    request_deserializer=aoi__collection__pb2.AOICollectionGetRequest.FromString,
                    response_serializer=aoi__collection__pb2.AOICollectionGetResponse.SerializeToString,
            ),
            'clone': grpc.unary_unary_rpc_method_handler(
                    servicer.clone,
                    request_deserializer=aoi__collection__pb2.AOICollectionCloneRequest.FromString,
                    response_serializer=aoi__collection__pb2.AOICollectionCloneResponse.SerializeToString,
            ),
            'add': grpc.unary_unary_rpc_method_handler(
                    servicer.add,
                    request_deserializer=aoi__collection__pb2.AOICollectionAddRequest.FromString,
                    response_serializer=aoi__collection__pb2.AOICollectionAddResponse.SerializeToString,
            ),
            'remove': grpc.unary_unary_rpc_method_handler(
                    servicer.remove,
                    request_deserializer=aoi__collection__pb2.AOICollectionRemoveRequest.FromString,
                    response_serializer=aoi__collection__pb2.AOICollectionRemoveResponse.SerializeToString,
            ),
            'list': grpc.unary_unary_rpc_method_handler(
                    servicer.list,
                    request_deserializer=aoi__collection__pb2.AOICollectionListRequest.FromString,
                    response_serializer=aoi__collection__pb2.AOICollectionListResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'oi.papi.AOICollectionApi', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class AOICollectionApi(object):
    """Missing associated documentation comment in .proto file."""

    @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, '/oi.papi.AOICollectionApi/create',
            aoi__collection__pb2.AOICollectionCreateRequest.SerializeToString,
            aoi__collection__pb2.AOICollectionCreateResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @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, '/oi.papi.AOICollectionApi/get',
            aoi__collection__pb2.AOICollectionGetRequest.SerializeToString,
            aoi__collection__pb2.AOICollectionGetResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def clone(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, '/oi.papi.AOICollectionApi/clone',
            aoi__collection__pb2.AOICollectionCloneRequest.SerializeToString,
            aoi__collection__pb2.AOICollectionCloneResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def add(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, '/oi.papi.AOICollectionApi/add',
            aoi__collection__pb2.AOICollectionAddRequest.SerializeToString,
            aoi__collection__pb2.AOICollectionAddResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def remove(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, '/oi.papi.AOICollectionApi/remove',
            aoi__collection__pb2.AOICollectionRemoveRequest.SerializeToString,
            aoi__collection__pb2.AOICollectionRemoveResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @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, '/oi.papi.AOICollectionApi/list',
            aoi__collection__pb2.AOICollectionListRequest.SerializeToString,
            aoi__collection__pb2.AOICollectionListResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
