//
//Сервис реализует функционал управления приложениями

// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc             v4.23.1
// source: keyapis/multiapp/v1/keyapis_multiapp_app_v1.proto

package keyapis_multiapp_v1

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

const (
	AppService_PostApp_FullMethodName         = "/keyapis.multiapp.v1.AppService/PostApp"
	AppService_GetApp_FullMethodName          = "/keyapis.multiapp.v1.AppService/GetApp"
	AppService_GetAppLite_FullMethodName      = "/keyapis.multiapp.v1.AppService/GetAppLite"
	AppService_GetAppList_FullMethodName      = "/keyapis.multiapp.v1.AppService/GetAppList"
	AppService_GetAppLiteList_FullMethodName  = "/keyapis.multiapp.v1.AppService/GetAppLiteList"
	AppService_GetAppLiteCount_FullMethodName = "/keyapis.multiapp.v1.AppService/GetAppLiteCount"
	AppService_GetAppCount_FullMethodName     = "/keyapis.multiapp.v1.AppService/GetAppCount"
	AppService_GetAppCode_FullMethodName      = "/keyapis.multiapp.v1.AppService/GetAppCode"
	AppService_DeleteApp_FullMethodName       = "/keyapis.multiapp.v1.AppService/DeleteApp"
)

// AppServiceClient is the client API for AppService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type AppServiceClient interface {
	// Метод сохранения приложения.
	// Поддерживает создание и обновление.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695668.
	// Метод доступен для: admin, manager, service
	PostApp(ctx context.Context, in *PostAppRequest, opts ...grpc.CallOption) (*PostAppResponse, error)
	// Метод получения приложения.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
	// Метод доступен для: admin, manager, service, ltp_first
	GetApp(ctx context.Context, in *GetAppRequest, opts ...grpc.CallOption) (*GetAppResponse, error)
	// Метод получения упрощённого приложения.
	// Не требует авторизации
	GetAppLite(ctx context.Context, in *GetAppLiteRequest, opts ...grpc.CallOption) (*GetAppLiteResponse, error)
	// Метод получения списка приложений.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
	// Метод доступен для: admin, manager, service, ltp_first
	GetAppList(ctx context.Context, in *GetAppListRequest, opts ...grpc.CallOption) (AppService_GetAppListClient, error)
	// Метод получения списка упрощённых приложений.
	// Возвращает приложения не в статусе DELETED.
	// Если не передан параметр app_lite_tag.platform_type возвращает пустой список.
	// Если не передан параметр app_lite_tag.app_name возвращает пустой список.
	// Если не передан параметр user_tags, либо user_tags пустой, возвращает пустой список.
	// На основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
	// Не требует авторизации
	GetAppLiteList(ctx context.Context, in *GetAppLiteListRequest, opts ...grpc.CallOption) (AppService_GetAppLiteListClient, error)
	// Метод получения количества упрощённых приложений.
	// Учитывает приложения не в статусе DELETED.
	// Если не передан параметр app_lite_tag.platform_type возвращает 0.
	// Если не передан параметр app_lite_tag.app_name возвращает 0.
	// Если не передан параметр user_tags, либо user_tags пустой, возвращает 0.
	// На основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.
	// Не требует авторизации
	GetAppLiteCount(ctx context.Context, in *GetAppLiteCountRequest, opts ...grpc.CallOption) (*GetAppLiteCountResponse, error)
	// Метод получения количества приложений.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
	// Метод доступен для: admin, manager, service, ltp_first
	GetAppCount(ctx context.Context, in *GetAppCountRequest, opts ...grpc.CallOption) (*GetAppCountResponse, error)
	// Метод получения кода для перехода в приложение.
	// Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
	// Метод доступен для: admin, service, master, slave
	GetAppCode(ctx context.Context, in *GetAppCodeRequest, opts ...grpc.CallOption) (*GetAppCodeResponse, error)
	// Метод удаления приложения.
	// Soft delete, из базы не удаляется, проставляется статус.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
	// Метод доступен для: admin, manager, service
	DeleteApp(ctx context.Context, in *DeleteAppRequest, opts ...grpc.CallOption) (*DeleteAppResponse, error)
}

type appServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewAppServiceClient(cc grpc.ClientConnInterface) AppServiceClient {
	return &appServiceClient{cc}
}

func (c *appServiceClient) PostApp(ctx context.Context, in *PostAppRequest, opts ...grpc.CallOption) (*PostAppResponse, error) {
	out := new(PostAppResponse)
	err := c.cc.Invoke(ctx, AppService_PostApp_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *appServiceClient) GetApp(ctx context.Context, in *GetAppRequest, opts ...grpc.CallOption) (*GetAppResponse, error) {
	out := new(GetAppResponse)
	err := c.cc.Invoke(ctx, AppService_GetApp_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *appServiceClient) GetAppLite(ctx context.Context, in *GetAppLiteRequest, opts ...grpc.CallOption) (*GetAppLiteResponse, error) {
	out := new(GetAppLiteResponse)
	err := c.cc.Invoke(ctx, AppService_GetAppLite_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *appServiceClient) GetAppList(ctx context.Context, in *GetAppListRequest, opts ...grpc.CallOption) (AppService_GetAppListClient, error) {
	stream, err := c.cc.NewStream(ctx, &AppService_ServiceDesc.Streams[0], AppService_GetAppList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &appServiceGetAppListClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type AppService_GetAppListClient interface {
	Recv() (*GetAppListResponse, error)
	grpc.ClientStream
}

type appServiceGetAppListClient struct {
	grpc.ClientStream
}

func (x *appServiceGetAppListClient) Recv() (*GetAppListResponse, error) {
	m := new(GetAppListResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *appServiceClient) GetAppLiteList(ctx context.Context, in *GetAppLiteListRequest, opts ...grpc.CallOption) (AppService_GetAppLiteListClient, error) {
	stream, err := c.cc.NewStream(ctx, &AppService_ServiceDesc.Streams[1], AppService_GetAppLiteList_FullMethodName, opts...)
	if err != nil {
		return nil, err
	}
	x := &appServiceGetAppLiteListClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type AppService_GetAppLiteListClient interface {
	Recv() (*GetAppLiteListResponse, error)
	grpc.ClientStream
}

type appServiceGetAppLiteListClient struct {
	grpc.ClientStream
}

func (x *appServiceGetAppLiteListClient) Recv() (*GetAppLiteListResponse, error) {
	m := new(GetAppLiteListResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *appServiceClient) GetAppLiteCount(ctx context.Context, in *GetAppLiteCountRequest, opts ...grpc.CallOption) (*GetAppLiteCountResponse, error) {
	out := new(GetAppLiteCountResponse)
	err := c.cc.Invoke(ctx, AppService_GetAppLiteCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *appServiceClient) GetAppCount(ctx context.Context, in *GetAppCountRequest, opts ...grpc.CallOption) (*GetAppCountResponse, error) {
	out := new(GetAppCountResponse)
	err := c.cc.Invoke(ctx, AppService_GetAppCount_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *appServiceClient) GetAppCode(ctx context.Context, in *GetAppCodeRequest, opts ...grpc.CallOption) (*GetAppCodeResponse, error) {
	out := new(GetAppCodeResponse)
	err := c.cc.Invoke(ctx, AppService_GetAppCode_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *appServiceClient) DeleteApp(ctx context.Context, in *DeleteAppRequest, opts ...grpc.CallOption) (*DeleteAppResponse, error) {
	out := new(DeleteAppResponse)
	err := c.cc.Invoke(ctx, AppService_DeleteApp_FullMethodName, in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// AppServiceServer is the server API for AppService service.
// All implementations should embed UnimplementedAppServiceServer
// for forward compatibility
type AppServiceServer interface {
	// Метод сохранения приложения.
	// Поддерживает создание и обновление.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695668.
	// Метод доступен для: admin, manager, service
	PostApp(context.Context, *PostAppRequest) (*PostAppResponse, error)
	// Метод получения приложения.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
	// Метод доступен для: admin, manager, service, ltp_first
	GetApp(context.Context, *GetAppRequest) (*GetAppResponse, error)
	// Метод получения упрощённого приложения.
	// Не требует авторизации
	GetAppLite(context.Context, *GetAppLiteRequest) (*GetAppLiteResponse, error)
	// Метод получения списка приложений.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
	// Метод доступен для: admin, manager, service, ltp_first
	GetAppList(*GetAppListRequest, AppService_GetAppListServer) error
	// Метод получения списка упрощённых приложений.
	// Возвращает приложения не в статусе DELETED.
	// Если не передан параметр app_lite_tag.platform_type возвращает пустой список.
	// Если не передан параметр app_lite_tag.app_name возвращает пустой список.
	// Если не передан параметр user_tags, либо user_tags пустой, возвращает пустой список.
	// На основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
	// Не требует авторизации
	GetAppLiteList(*GetAppLiteListRequest, AppService_GetAppLiteListServer) error
	// Метод получения количества упрощённых приложений.
	// Учитывает приложения не в статусе DELETED.
	// Если не передан параметр app_lite_tag.platform_type возвращает 0.
	// Если не передан параметр app_lite_tag.app_name возвращает 0.
	// Если не передан параметр user_tags, либо user_tags пустой, возвращает 0.
	// На основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.
	// Не требует авторизации
	GetAppLiteCount(context.Context, *GetAppLiteCountRequest) (*GetAppLiteCountResponse, error)
	// Метод получения количества приложений.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
	// Метод доступен для: admin, manager, service, ltp_first
	GetAppCount(context.Context, *GetAppCountRequest) (*GetAppCountResponse, error)
	// Метод получения кода для перехода в приложение.
	// Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
	// Метод доступен для: admin, service, master, slave
	GetAppCode(context.Context, *GetAppCodeRequest) (*GetAppCodeResponse, error)
	// Метод удаления приложения.
	// Soft delete, из базы не удаляется, проставляется статус.
	// Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
	// Метод доступен для: admin, manager, service
	DeleteApp(context.Context, *DeleteAppRequest) (*DeleteAppResponse, error)
}

// UnimplementedAppServiceServer should be embedded to have forward compatible implementations.
type UnimplementedAppServiceServer struct {
}

func (UnimplementedAppServiceServer) PostApp(context.Context, *PostAppRequest) (*PostAppResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PostApp not implemented")
}
func (UnimplementedAppServiceServer) GetApp(context.Context, *GetAppRequest) (*GetAppResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetApp not implemented")
}
func (UnimplementedAppServiceServer) GetAppLite(context.Context, *GetAppLiteRequest) (*GetAppLiteResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetAppLite not implemented")
}
func (UnimplementedAppServiceServer) GetAppList(*GetAppListRequest, AppService_GetAppListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetAppList not implemented")
}
func (UnimplementedAppServiceServer) GetAppLiteList(*GetAppLiteListRequest, AppService_GetAppLiteListServer) error {
	return status.Errorf(codes.Unimplemented, "method GetAppLiteList not implemented")
}
func (UnimplementedAppServiceServer) GetAppLiteCount(context.Context, *GetAppLiteCountRequest) (*GetAppLiteCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetAppLiteCount not implemented")
}
func (UnimplementedAppServiceServer) GetAppCount(context.Context, *GetAppCountRequest) (*GetAppCountResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetAppCount not implemented")
}
func (UnimplementedAppServiceServer) GetAppCode(context.Context, *GetAppCodeRequest) (*GetAppCodeResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetAppCode not implemented")
}
func (UnimplementedAppServiceServer) DeleteApp(context.Context, *DeleteAppRequest) (*DeleteAppResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteApp not implemented")
}

// UnsafeAppServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to AppServiceServer will
// result in compilation errors.
type UnsafeAppServiceServer interface {
	mustEmbedUnimplementedAppServiceServer()
}

func RegisterAppServiceServer(s grpc.ServiceRegistrar, srv AppServiceServer) {
	s.RegisterService(&AppService_ServiceDesc, srv)
}

func _AppService_PostApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PostAppRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AppServiceServer).PostApp(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: AppService_PostApp_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AppServiceServer).PostApp(ctx, req.(*PostAppRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _AppService_GetApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAppRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AppServiceServer).GetApp(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: AppService_GetApp_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AppServiceServer).GetApp(ctx, req.(*GetAppRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _AppService_GetAppLite_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAppLiteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AppServiceServer).GetAppLite(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: AppService_GetAppLite_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AppServiceServer).GetAppLite(ctx, req.(*GetAppLiteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _AppService_GetAppList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetAppListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(AppServiceServer).GetAppList(m, &appServiceGetAppListServer{stream})
}

type AppService_GetAppListServer interface {
	Send(*GetAppListResponse) error
	grpc.ServerStream
}

type appServiceGetAppListServer struct {
	grpc.ServerStream
}

func (x *appServiceGetAppListServer) Send(m *GetAppListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _AppService_GetAppLiteList_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(GetAppLiteListRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(AppServiceServer).GetAppLiteList(m, &appServiceGetAppLiteListServer{stream})
}

type AppService_GetAppLiteListServer interface {
	Send(*GetAppLiteListResponse) error
	grpc.ServerStream
}

type appServiceGetAppLiteListServer struct {
	grpc.ServerStream
}

func (x *appServiceGetAppLiteListServer) Send(m *GetAppLiteListResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _AppService_GetAppLiteCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAppLiteCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AppServiceServer).GetAppLiteCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: AppService_GetAppLiteCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AppServiceServer).GetAppLiteCount(ctx, req.(*GetAppLiteCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _AppService_GetAppCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAppCountRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AppServiceServer).GetAppCount(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: AppService_GetAppCount_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AppServiceServer).GetAppCount(ctx, req.(*GetAppCountRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _AppService_GetAppCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAppCodeRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AppServiceServer).GetAppCode(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: AppService_GetAppCode_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AppServiceServer).GetAppCode(ctx, req.(*GetAppCodeRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _AppService_DeleteApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteAppRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AppServiceServer).DeleteApp(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: AppService_DeleteApp_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AppServiceServer).DeleteApp(ctx, req.(*DeleteAppRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// AppService_ServiceDesc is the grpc.ServiceDesc for AppService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var AppService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "keyapis.multiapp.v1.AppService",
	HandlerType: (*AppServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "PostApp",
			Handler:    _AppService_PostApp_Handler,
		},
		{
			MethodName: "GetApp",
			Handler:    _AppService_GetApp_Handler,
		},
		{
			MethodName: "GetAppLite",
			Handler:    _AppService_GetAppLite_Handler,
		},
		{
			MethodName: "GetAppLiteCount",
			Handler:    _AppService_GetAppLiteCount_Handler,
		},
		{
			MethodName: "GetAppCount",
			Handler:    _AppService_GetAppCount_Handler,
		},
		{
			MethodName: "GetAppCode",
			Handler:    _AppService_GetAppCode_Handler,
		},
		{
			MethodName: "DeleteApp",
			Handler:    _AppService_DeleteApp_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "GetAppList",
			Handler:       _AppService_GetAppList_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "GetAppLiteList",
			Handler:       _AppService_GetAppLiteList_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "keyapis/multiapp/v1/keyapis_multiapp_app_v1.proto",
}
