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

from common.api.services.common import common_pb2 as services_dot_common_dot_common__pb2
from common.api.services.product import product_pb2 as services_dot_product_dot_product__pb2


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

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

        Args:
            channel: A grpc.Channel.
        """
        self.Ping = channel.unary_unary(
                '/social.product.ProductService/Ping',
                request_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Pong.FromString,
                )
        self.Publish = channel.unary_unary(
                '/social.product.ProductService/Publish',
                request_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                )
        self.Update = channel.unary_unary(
                '/social.product.ProductService/Update',
                request_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                )
        self.Delete = channel.unary_unary(
                '/social.product.ProductService/Delete',
                request_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.Get = channel.unary_unary(
                '/social.product.ProductService/Get',
                request_serializer=services_dot_product_dot_product__pb2.GetProduct.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                )
        self.Find = channel.unary_unary(
                '/social.product.ProductService/Find',
                request_serializer=services_dot_product_dot_product__pb2.FindProductRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductList.FromString,
                )
        self.GetAll = channel.unary_unary(
                '/social.product.ProductService/GetAll',
                request_serializer=services_dot_product_dot_product__pb2.GetAllRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductList.FromString,
                )
        self.GetMyProducts = channel.unary_unary(
                '/social.product.ProductService/GetMyProducts',
                request_serializer=services_dot_common_dot_common__pb2.Pagination.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductList.FromString,
                )
        self.GetAllCategories = channel.unary_unary(
                '/social.product.ProductService/GetAllCategories',
                request_serializer=services_dot_product_dot_product__pb2.GetAllCategoriesRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductCategoryList.FromString,
                )
        self.GetCategory = channel.unary_unary(
                '/social.product.ProductService/GetCategory',
                request_serializer=services_dot_product_dot_product__pb2.GetCategoryRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                )
        self.GetAllCategoriesWithSub = channel.unary_unary(
                '/social.product.ProductService/GetAllCategoriesWithSub',
                request_serializer=services_dot_product_dot_product__pb2.GetAllCategoriesWithSubRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductCategoryList.FromString,
                )
        self.FindCategory = channel.unary_unary(
                '/social.product.ProductService/FindCategory',
                request_serializer=services_dot_product_dot_product__pb2.FindCategoryRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductCategoryList.FromString,
                )
        self.UploadMedia = channel.unary_unary(
                '/social.product.ProductService/UploadMedia',
                request_serializer=services_dot_common_dot_common__pb2.UploadMediaRequest.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.UploadMediaResponse.FromString,
                )
        self.UploadMediaCategory = channel.unary_unary(
                '/social.product.ProductService/UploadMediaCategory',
                request_serializer=services_dot_common_dot_common__pb2.UploadMediaRequest.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.UploadMediaResponse.FromString,
                )
        self.UploadStyleThumbnail = channel.unary_unary(
                '/social.product.ProductService/UploadStyleThumbnail',
                request_serializer=services_dot_common_dot_common__pb2.UploadMediaRequest.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.UploadMediaResponse.FromString,
                )
        self.GetRootCategory = channel.unary_unary(
                '/social.product.ProductService/GetRootCategory',
                request_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.RootCategory.FromString,
                )
        self.GetSubCategoryContent = channel.unary_unary(
                '/social.product.ProductService/GetSubCategoryContent',
                request_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.SubCategoryContent.FromString,
                )
        self.GetCategoryProperty = channel.unary_unary(
                '/social.product.ProductService/GetCategoryProperty',
                request_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.PropertyList.FromString,
                )
        self.CreateStyle = channel.unary_unary(
                '/social.product.ProductService/CreateStyle',
                request_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                )
        self.UpdateStyle = channel.unary_unary(
                '/social.product.ProductService/UpdateStyle',
                request_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                )
        self.DeleteStyle = channel.unary_unary(
                '/social.product.ProductService/DeleteStyle',
                request_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.ArchiveStyle = channel.unary_unary(
                '/social.product.ProductService/ArchiveStyle',
                request_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.PublicStyle = channel.unary_unary(
                '/social.product.ProductService/PublicStyle',
                request_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.GetStyle = channel.unary_unary(
                '/social.product.ProductService/GetStyle',
                request_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                )
        self.GetAllStyles = channel.unary_unary(
                '/social.product.ProductService/GetAllStyles',
                request_serializer=services_dot_product_dot_product__pb2.GetAllStylesRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.StyleMakerList.FromString,
                )
        self.GetFavorite = channel.unary_unary(
                '/social.product.ProductService/GetFavorite',
                request_serializer=services_dot_common_dot_common__pb2.Pagination.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductList.FromString,
                )
        self.AddToFavorite = channel.unary_unary(
                '/social.product.ProductService/AddToFavorite',
                request_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.RemoveFromFavorite = channel.unary_unary(
                '/social.product.ProductService/RemoveFromFavorite',
                request_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.PublishReview = channel.unary_unary(
                '/social.product.ProductService/PublishReview',
                request_serializer=services_dot_product_dot_product__pb2.Review.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Review.FromString,
                )
        self.UpdateReview = channel.unary_unary(
                '/social.product.ProductService/UpdateReview',
                request_serializer=services_dot_product_dot_product__pb2.Review.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Review.FromString,
                )
        self.DeleteReview = channel.unary_unary(
                '/social.product.ProductService/DeleteReview',
                request_serializer=services_dot_product_dot_product__pb2.Review.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.GetAllReviews = channel.unary_unary(
                '/social.product.ProductService/GetAllReviews',
                request_serializer=services_dot_product_dot_product__pb2.GetAllReviewsRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ReviewList.FromString,
                )
        self.GetUnApprovedReviews = channel.unary_unary(
                '/social.product.ProductService/GetUnApprovedReviews',
                request_serializer=services_dot_product_dot_product__pb2.GetAllReviewsRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ReviewList.FromString,
                )
        self.GetReview = channel.unary_unary(
                '/social.product.ProductService/GetReview',
                request_serializer=services_dot_product_dot_product__pb2.Review.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Review.FromString,
                )
        self.AdminGetAll = channel.unary_unary(
                '/social.product.ProductService/AdminGetAll',
                request_serializer=services_dot_common_dot_common__pb2.Pagination.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductList.FromString,
                )
        self.AdminApproveProduct = channel.unary_unary(
                '/social.product.ProductService/AdminApproveProduct',
                request_serializer=services_dot_product_dot_product__pb2.ProductPublishStatusRequest.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.AdminRejectProduct = channel.unary_unary(
                '/social.product.ProductService/AdminRejectProduct',
                request_serializer=services_dot_product_dot_product__pb2.ProductPublishStatusRequest.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.AdminGetUnapprovedProduct = channel.unary_unary(
                '/social.product.ProductService/AdminGetUnapprovedProduct',
                request_serializer=services_dot_common_dot_common__pb2.Pagination.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductList.FromString,
                )
        self.AdminApproveReview = channel.unary_unary(
                '/social.product.ProductService/AdminApproveReview',
                request_serializer=services_dot_product_dot_product__pb2.ReviewPublishStatusRequest.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.AdminRejectReview = channel.unary_unary(
                '/social.product.ProductService/AdminRejectReview',
                request_serializer=services_dot_product_dot_product__pb2.ReviewPublishStatusRequest.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.AdminGetUnapprovedReview = channel.unary_unary(
                '/social.product.ProductService/AdminGetUnapprovedReview',
                request_serializer=services_dot_common_dot_common__pb2.Pagination.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ReviewList.FromString,
                )
        self.AdminGetReviewByStatus = channel.unary_unary(
                '/social.product.ProductService/AdminGetReviewByStatus',
                request_serializer=services_dot_product_dot_product__pb2.GetReviewsRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ReviewList.FromString,
                )
        self.AdminCreateProperty = channel.unary_unary(
                '/social.product.ProductService/AdminCreateProperty',
                request_serializer=services_dot_product_dot_product__pb2.Property.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Property.FromString,
                )
        self.AdminUpdateProperty = channel.unary_unary(
                '/social.product.ProductService/AdminUpdateProperty',
                request_serializer=services_dot_product_dot_product__pb2.Property.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.Property.FromString,
                )
        self.AdminDeleteProperty = channel.unary_unary(
                '/social.product.ProductService/AdminDeleteProperty',
                request_serializer=services_dot_product_dot_product__pb2.Property.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.AdminGetAllProperties = channel.unary_unary(
                '/social.product.ProductService/AdminGetAllProperties',
                request_serializer=services_dot_common_dot_common__pb2.Pagination.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.PropertyList.FromString,
                )
        self.AdminFindProperty = channel.unary_unary(
                '/social.product.ProductService/AdminFindProperty',
                request_serializer=services_dot_common_dot_common__pb2.FindRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.PropertyList.FromString,
                )
        self.AdminCreateCategory = channel.unary_unary(
                '/social.product.ProductService/AdminCreateCategory',
                request_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                )
        self.AdminUpdateCategory = channel.unary_unary(
                '/social.product.ProductService/AdminUpdateCategory',
                request_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                )
        self.AdminDeleteCategory = channel.unary_unary(
                '/social.product.ProductService/AdminDeleteCategory',
                request_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
                response_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                )
        self.AdminGetCategory = channel.unary_unary(
                '/social.product.ProductService/AdminGetCategory',
                request_serializer=services_dot_product_dot_product__pb2.GetCategoryRequest.SerializeToString,
                response_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                )


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

    def Ping(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Publish(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Update(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Delete(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Get(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Find(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAll(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetMyProducts(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAllCategories(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetCategory(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAllCategoriesWithSub(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def FindCategory(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UploadMedia(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UploadMediaCategory(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UploadStyleThumbnail(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetRootCategory(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetSubCategoryContent(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetCategoryProperty(self, request, context):
        """Property
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateStyle(self, request, context):
        """StyleMaker
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateStyle(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteStyle(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ArchiveStyle(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def PublicStyle(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetStyle(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAllStyles(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetFavorite(self, request, context):
        """Closet
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AddToFavorite(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RemoveFromFavorite(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def PublishReview(self, request, context):
        """Review
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateReview(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteReview(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAllReviews(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetUnApprovedReviews(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetReview(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminGetAll(self, request, context):
        """Admin

        Product
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminApproveProduct(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminRejectProduct(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminGetUnapprovedProduct(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminApproveReview(self, request, context):
        """Review
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminRejectReview(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminGetUnapprovedReview(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminGetReviewByStatus(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminCreateProperty(self, request, context):
        """Property
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminUpdateProperty(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminDeleteProperty(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminGetAllProperties(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminFindProperty(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminCreateCategory(self, request, context):
        """Category
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminUpdateCategory(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminDeleteCategory(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AdminGetCategory(self, request, context):
        """Get category by id
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_ProductServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'Ping': grpc.unary_unary_rpc_method_handler(
                    servicer.Ping,
                    request_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Pong.SerializeToString,
            ),
            'Publish': grpc.unary_unary_rpc_method_handler(
                    servicer.Publish,
                    request_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
            ),
            'Update': grpc.unary_unary_rpc_method_handler(
                    servicer.Update,
                    request_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
            ),
            'Delete': grpc.unary_unary_rpc_method_handler(
                    servicer.Delete,
                    request_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'Get': grpc.unary_unary_rpc_method_handler(
                    servicer.Get,
                    request_deserializer=services_dot_product_dot_product__pb2.GetProduct.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Product.SerializeToString,
            ),
            'Find': grpc.unary_unary_rpc_method_handler(
                    servicer.Find,
                    request_deserializer=services_dot_product_dot_product__pb2.FindProductRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductList.SerializeToString,
            ),
            'GetAll': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAll,
                    request_deserializer=services_dot_product_dot_product__pb2.GetAllRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductList.SerializeToString,
            ),
            'GetMyProducts': grpc.unary_unary_rpc_method_handler(
                    servicer.GetMyProducts,
                    request_deserializer=services_dot_common_dot_common__pb2.Pagination.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductList.SerializeToString,
            ),
            'GetAllCategories': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAllCategories,
                    request_deserializer=services_dot_product_dot_product__pb2.GetAllCategoriesRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductCategoryList.SerializeToString,
            ),
            'GetCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.GetCategory,
                    request_deserializer=services_dot_product_dot_product__pb2.GetCategoryRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            ),
            'GetAllCategoriesWithSub': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAllCategoriesWithSub,
                    request_deserializer=services_dot_product_dot_product__pb2.GetAllCategoriesWithSubRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductCategoryList.SerializeToString,
            ),
            'FindCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.FindCategory,
                    request_deserializer=services_dot_product_dot_product__pb2.FindCategoryRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductCategoryList.SerializeToString,
            ),
            'UploadMedia': grpc.unary_unary_rpc_method_handler(
                    servicer.UploadMedia,
                    request_deserializer=services_dot_common_dot_common__pb2.UploadMediaRequest.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.UploadMediaResponse.SerializeToString,
            ),
            'UploadMediaCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.UploadMediaCategory,
                    request_deserializer=services_dot_common_dot_common__pb2.UploadMediaRequest.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.UploadMediaResponse.SerializeToString,
            ),
            'UploadStyleThumbnail': grpc.unary_unary_rpc_method_handler(
                    servicer.UploadStyleThumbnail,
                    request_deserializer=services_dot_common_dot_common__pb2.UploadMediaRequest.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.UploadMediaResponse.SerializeToString,
            ),
            'GetRootCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.GetRootCategory,
                    request_deserializer=services_dot_common_dot_common__pb2.Empty.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.RootCategory.SerializeToString,
            ),
            'GetSubCategoryContent': grpc.unary_unary_rpc_method_handler(
                    servicer.GetSubCategoryContent,
                    request_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.SubCategoryContent.SerializeToString,
            ),
            'GetCategoryProperty': grpc.unary_unary_rpc_method_handler(
                    servicer.GetCategoryProperty,
                    request_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.PropertyList.SerializeToString,
            ),
            'CreateStyle': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateStyle,
                    request_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            ),
            'UpdateStyle': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateStyle,
                    request_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            ),
            'DeleteStyle': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteStyle,
                    request_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'ArchiveStyle': grpc.unary_unary_rpc_method_handler(
                    servicer.ArchiveStyle,
                    request_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'PublicStyle': grpc.unary_unary_rpc_method_handler(
                    servicer.PublicStyle,
                    request_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'GetStyle': grpc.unary_unary_rpc_method_handler(
                    servicer.GetStyle,
                    request_deserializer=services_dot_product_dot_product__pb2.StyleMaker.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            ),
            'GetAllStyles': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAllStyles,
                    request_deserializer=services_dot_product_dot_product__pb2.GetAllStylesRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.StyleMakerList.SerializeToString,
            ),
            'GetFavorite': grpc.unary_unary_rpc_method_handler(
                    servicer.GetFavorite,
                    request_deserializer=services_dot_common_dot_common__pb2.Pagination.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductList.SerializeToString,
            ),
            'AddToFavorite': grpc.unary_unary_rpc_method_handler(
                    servicer.AddToFavorite,
                    request_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'RemoveFromFavorite': grpc.unary_unary_rpc_method_handler(
                    servicer.RemoveFromFavorite,
                    request_deserializer=services_dot_product_dot_product__pb2.Product.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'PublishReview': grpc.unary_unary_rpc_method_handler(
                    servicer.PublishReview,
                    request_deserializer=services_dot_product_dot_product__pb2.Review.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Review.SerializeToString,
            ),
            'UpdateReview': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateReview,
                    request_deserializer=services_dot_product_dot_product__pb2.Review.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Review.SerializeToString,
            ),
            'DeleteReview': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteReview,
                    request_deserializer=services_dot_product_dot_product__pb2.Review.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'GetAllReviews': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAllReviews,
                    request_deserializer=services_dot_product_dot_product__pb2.GetAllReviewsRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ReviewList.SerializeToString,
            ),
            'GetUnApprovedReviews': grpc.unary_unary_rpc_method_handler(
                    servicer.GetUnApprovedReviews,
                    request_deserializer=services_dot_product_dot_product__pb2.GetAllReviewsRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ReviewList.SerializeToString,
            ),
            'GetReview': grpc.unary_unary_rpc_method_handler(
                    servicer.GetReview,
                    request_deserializer=services_dot_product_dot_product__pb2.Review.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Review.SerializeToString,
            ),
            'AdminGetAll': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminGetAll,
                    request_deserializer=services_dot_common_dot_common__pb2.Pagination.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductList.SerializeToString,
            ),
            'AdminApproveProduct': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminApproveProduct,
                    request_deserializer=services_dot_product_dot_product__pb2.ProductPublishStatusRequest.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'AdminRejectProduct': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminRejectProduct,
                    request_deserializer=services_dot_product_dot_product__pb2.ProductPublishStatusRequest.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'AdminGetUnapprovedProduct': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminGetUnapprovedProduct,
                    request_deserializer=services_dot_common_dot_common__pb2.Pagination.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductList.SerializeToString,
            ),
            'AdminApproveReview': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminApproveReview,
                    request_deserializer=services_dot_product_dot_product__pb2.ReviewPublishStatusRequest.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'AdminRejectReview': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminRejectReview,
                    request_deserializer=services_dot_product_dot_product__pb2.ReviewPublishStatusRequest.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'AdminGetUnapprovedReview': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminGetUnapprovedReview,
                    request_deserializer=services_dot_common_dot_common__pb2.Pagination.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ReviewList.SerializeToString,
            ),
            'AdminGetReviewByStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminGetReviewByStatus,
                    request_deserializer=services_dot_product_dot_product__pb2.GetReviewsRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ReviewList.SerializeToString,
            ),
            'AdminCreateProperty': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminCreateProperty,
                    request_deserializer=services_dot_product_dot_product__pb2.Property.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Property.SerializeToString,
            ),
            'AdminUpdateProperty': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminUpdateProperty,
                    request_deserializer=services_dot_product_dot_product__pb2.Property.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.Property.SerializeToString,
            ),
            'AdminDeleteProperty': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminDeleteProperty,
                    request_deserializer=services_dot_product_dot_product__pb2.Property.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'AdminGetAllProperties': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminGetAllProperties,
                    request_deserializer=services_dot_common_dot_common__pb2.Pagination.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.PropertyList.SerializeToString,
            ),
            'AdminFindProperty': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminFindProperty,
                    request_deserializer=services_dot_common_dot_common__pb2.FindRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.PropertyList.SerializeToString,
            ),
            'AdminCreateCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminCreateCategory,
                    request_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            ),
            'AdminUpdateCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminUpdateCategory,
                    request_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            ),
            'AdminDeleteCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminDeleteCategory,
                    request_deserializer=services_dot_product_dot_product__pb2.ProductCategory.FromString,
                    response_serializer=services_dot_common_dot_common__pb2.Empty.SerializeToString,
            ),
            'AdminGetCategory': grpc.unary_unary_rpc_method_handler(
                    servicer.AdminGetCategory,
                    request_deserializer=services_dot_product_dot_product__pb2.GetCategoryRequest.FromString,
                    response_serializer=services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'social.product.ProductService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


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

    @staticmethod
    def Ping(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, '/social.product.ProductService/Ping',
            services_dot_common_dot_common__pb2.Empty.SerializeToString,
            services_dot_common_dot_common__pb2.Pong.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def Publish(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, '/social.product.ProductService/Publish',
            services_dot_product_dot_product__pb2.Product.SerializeToString,
            services_dot_product_dot_product__pb2.Product.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @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, '/social.product.ProductService/Update',
            services_dot_product_dot_product__pb2.Product.SerializeToString,
            services_dot_product_dot_product__pb2.Product.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @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, '/social.product.ProductService/Delete',
            services_dot_product_dot_product__pb2.Product.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.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, '/social.product.ProductService/Get',
            services_dot_product_dot_product__pb2.GetProduct.SerializeToString,
            services_dot_product_dot_product__pb2.Product.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def Find(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, '/social.product.ProductService/Find',
            services_dot_product_dot_product__pb2.FindProductRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ProductList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAll(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, '/social.product.ProductService/GetAll',
            services_dot_product_dot_product__pb2.GetAllRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ProductList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetMyProducts(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, '/social.product.ProductService/GetMyProducts',
            services_dot_common_dot_common__pb2.Pagination.SerializeToString,
            services_dot_product_dot_product__pb2.ProductList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAllCategories(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, '/social.product.ProductService/GetAllCategories',
            services_dot_product_dot_product__pb2.GetAllCategoriesRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ProductCategoryList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetCategory(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, '/social.product.ProductService/GetCategory',
            services_dot_product_dot_product__pb2.GetCategoryRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ProductCategory.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAllCategoriesWithSub(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, '/social.product.ProductService/GetAllCategoriesWithSub',
            services_dot_product_dot_product__pb2.GetAllCategoriesWithSubRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ProductCategoryList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def FindCategory(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, '/social.product.ProductService/FindCategory',
            services_dot_product_dot_product__pb2.FindCategoryRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ProductCategoryList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UploadMedia(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, '/social.product.ProductService/UploadMedia',
            services_dot_common_dot_common__pb2.UploadMediaRequest.SerializeToString,
            services_dot_common_dot_common__pb2.UploadMediaResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UploadMediaCategory(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, '/social.product.ProductService/UploadMediaCategory',
            services_dot_common_dot_common__pb2.UploadMediaRequest.SerializeToString,
            services_dot_common_dot_common__pb2.UploadMediaResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UploadStyleThumbnail(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, '/social.product.ProductService/UploadStyleThumbnail',
            services_dot_common_dot_common__pb2.UploadMediaRequest.SerializeToString,
            services_dot_common_dot_common__pb2.UploadMediaResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetRootCategory(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, '/social.product.ProductService/GetRootCategory',
            services_dot_common_dot_common__pb2.Empty.SerializeToString,
            services_dot_product_dot_product__pb2.RootCategory.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetSubCategoryContent(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, '/social.product.ProductService/GetSubCategoryContent',
            services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            services_dot_product_dot_product__pb2.SubCategoryContent.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetCategoryProperty(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, '/social.product.ProductService/GetCategoryProperty',
            services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            services_dot_product_dot_product__pb2.PropertyList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateStyle(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, '/social.product.ProductService/CreateStyle',
            services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            services_dot_product_dot_product__pb2.StyleMaker.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateStyle(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, '/social.product.ProductService/UpdateStyle',
            services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            services_dot_product_dot_product__pb2.StyleMaker.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteStyle(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, '/social.product.ProductService/DeleteStyle',
            services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ArchiveStyle(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, '/social.product.ProductService/ArchiveStyle',
            services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def PublicStyle(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, '/social.product.ProductService/PublicStyle',
            services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetStyle(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, '/social.product.ProductService/GetStyle',
            services_dot_product_dot_product__pb2.StyleMaker.SerializeToString,
            services_dot_product_dot_product__pb2.StyleMaker.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAllStyles(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, '/social.product.ProductService/GetAllStyles',
            services_dot_product_dot_product__pb2.GetAllStylesRequest.SerializeToString,
            services_dot_product_dot_product__pb2.StyleMakerList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetFavorite(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, '/social.product.ProductService/GetFavorite',
            services_dot_common_dot_common__pb2.Pagination.SerializeToString,
            services_dot_product_dot_product__pb2.ProductList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AddToFavorite(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, '/social.product.ProductService/AddToFavorite',
            services_dot_product_dot_product__pb2.Product.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RemoveFromFavorite(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, '/social.product.ProductService/RemoveFromFavorite',
            services_dot_product_dot_product__pb2.Product.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def PublishReview(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, '/social.product.ProductService/PublishReview',
            services_dot_product_dot_product__pb2.Review.SerializeToString,
            services_dot_product_dot_product__pb2.Review.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateReview(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, '/social.product.ProductService/UpdateReview',
            services_dot_product_dot_product__pb2.Review.SerializeToString,
            services_dot_product_dot_product__pb2.Review.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteReview(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, '/social.product.ProductService/DeleteReview',
            services_dot_product_dot_product__pb2.Review.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAllReviews(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, '/social.product.ProductService/GetAllReviews',
            services_dot_product_dot_product__pb2.GetAllReviewsRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ReviewList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetUnApprovedReviews(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, '/social.product.ProductService/GetUnApprovedReviews',
            services_dot_product_dot_product__pb2.GetAllReviewsRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ReviewList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetReview(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, '/social.product.ProductService/GetReview',
            services_dot_product_dot_product__pb2.Review.SerializeToString,
            services_dot_product_dot_product__pb2.Review.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminGetAll(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, '/social.product.ProductService/AdminGetAll',
            services_dot_common_dot_common__pb2.Pagination.SerializeToString,
            services_dot_product_dot_product__pb2.ProductList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminApproveProduct(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, '/social.product.ProductService/AdminApproveProduct',
            services_dot_product_dot_product__pb2.ProductPublishStatusRequest.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminRejectProduct(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, '/social.product.ProductService/AdminRejectProduct',
            services_dot_product_dot_product__pb2.ProductPublishStatusRequest.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminGetUnapprovedProduct(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, '/social.product.ProductService/AdminGetUnapprovedProduct',
            services_dot_common_dot_common__pb2.Pagination.SerializeToString,
            services_dot_product_dot_product__pb2.ProductList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminApproveReview(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, '/social.product.ProductService/AdminApproveReview',
            services_dot_product_dot_product__pb2.ReviewPublishStatusRequest.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminRejectReview(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, '/social.product.ProductService/AdminRejectReview',
            services_dot_product_dot_product__pb2.ReviewPublishStatusRequest.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminGetUnapprovedReview(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, '/social.product.ProductService/AdminGetUnapprovedReview',
            services_dot_common_dot_common__pb2.Pagination.SerializeToString,
            services_dot_product_dot_product__pb2.ReviewList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminGetReviewByStatus(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, '/social.product.ProductService/AdminGetReviewByStatus',
            services_dot_product_dot_product__pb2.GetReviewsRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ReviewList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminCreateProperty(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, '/social.product.ProductService/AdminCreateProperty',
            services_dot_product_dot_product__pb2.Property.SerializeToString,
            services_dot_product_dot_product__pb2.Property.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminUpdateProperty(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, '/social.product.ProductService/AdminUpdateProperty',
            services_dot_product_dot_product__pb2.Property.SerializeToString,
            services_dot_product_dot_product__pb2.Property.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminDeleteProperty(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, '/social.product.ProductService/AdminDeleteProperty',
            services_dot_product_dot_product__pb2.Property.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminGetAllProperties(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, '/social.product.ProductService/AdminGetAllProperties',
            services_dot_common_dot_common__pb2.Pagination.SerializeToString,
            services_dot_product_dot_product__pb2.PropertyList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminFindProperty(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, '/social.product.ProductService/AdminFindProperty',
            services_dot_common_dot_common__pb2.FindRequest.SerializeToString,
            services_dot_product_dot_product__pb2.PropertyList.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminCreateCategory(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, '/social.product.ProductService/AdminCreateCategory',
            services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            services_dot_product_dot_product__pb2.ProductCategory.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminUpdateCategory(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, '/social.product.ProductService/AdminUpdateCategory',
            services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            services_dot_product_dot_product__pb2.ProductCategory.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminDeleteCategory(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, '/social.product.ProductService/AdminDeleteCategory',
            services_dot_product_dot_product__pb2.ProductCategory.SerializeToString,
            services_dot_common_dot_common__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AdminGetCategory(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, '/social.product.ProductService/AdminGetCategory',
            services_dot_product_dot_product__pb2.GetCategoryRequest.SerializeToString,
            services_dot_product_dot_product__pb2.ProductCategory.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
