<?php
// GENERATED CODE -- DO NOT EDIT!

// Original file comments:
//
// Сервис реализует функционал управления приложениями
namespace Keyapis\Multiapp\V1;

/**
 * Сервис управления приложениями для суперапа
 */
class AppServiceClient extends \Grpc\BaseStub {

    /**
     * @param string $hostname hostname
     * @param array $opts channel options
     * @param \Grpc\Channel $channel (optional) re-use channel object
     */
    public function __construct($hostname, $opts, $channel = null) {
        parent::__construct($hostname, $opts, $channel);
    }

    /**
     * Метод сохранения приложения.
     * Поддерживает создание и обновление.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695668.
     * Метод доступен для: admin, manager, service
     * @param \Keyapis\Multiapp\V1\PostAppRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function PostApp(\Keyapis\Multiapp\V1\PostAppRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.AppService/PostApp',
        $argument,
        ['\Keyapis\Multiapp\V1\PostAppResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения приложения.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
     * Метод доступен для: admin, manager, service, ltp_first
     * @param \Keyapis\Multiapp\V1\GetAppRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetApp(\Keyapis\Multiapp\V1\GetAppRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.AppService/GetApp',
        $argument,
        ['\Keyapis\Multiapp\V1\GetAppResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения упрощённого приложения.
     * Не требует авторизации
     * @param \Keyapis\Multiapp\V1\GetAppLiteRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAppLite(\Keyapis\Multiapp\V1\GetAppLiteRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.AppService/GetAppLite',
        $argument,
        ['\Keyapis\Multiapp\V1\GetAppLiteResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка приложений.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
     * Метод доступен для: admin, manager, service, ltp_first
     * @param \Keyapis\Multiapp\V1\GetAppListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetAppList(\Keyapis\Multiapp\V1\GetAppListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.multiapp.v1.AppService/GetAppList',
        $argument,
        ['\Keyapis\Multiapp\V1\GetAppListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения списка упрощённых приложений.
     * Возвращает приложения не в статусе 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.
     * Не требует авторизации
     * @param \Keyapis\Multiapp\V1\GetAppLiteListRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\ServerStreamingCall
     */
    public function GetAppLiteList(\Keyapis\Multiapp\V1\GetAppLiteListRequest $argument,
      $metadata = [], $options = []) {
        return $this->_serverStreamRequest('/keyapis.multiapp.v1.AppService/GetAppLiteList',
        $argument,
        ['\Keyapis\Multiapp\V1\GetAppLiteListResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества упрощённых приложений.
     * Учитывает приложения не в статусе 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.
     * Не требует авторизации
     * @param \Keyapis\Multiapp\V1\GetAppLiteCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAppLiteCount(\Keyapis\Multiapp\V1\GetAppLiteCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.AppService/GetAppLiteCount',
        $argument,
        ['\Keyapis\Multiapp\V1\GetAppLiteCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения количества приложений.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
     * Метод доступен для: admin, manager, service, ltp_first
     * @param \Keyapis\Multiapp\V1\GetAppCountRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAppCount(\Keyapis\Multiapp\V1\GetAppCountRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.AppService/GetAppCount',
        $argument,
        ['\Keyapis\Multiapp\V1\GetAppCountResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод получения кода для перехода в приложение.
     * Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.
     * Метод доступен для: admin, service, master, slave
     * @param \Keyapis\Multiapp\V1\GetAppCodeRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function GetAppCode(\Keyapis\Multiapp\V1\GetAppCodeRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.AppService/GetAppCode',
        $argument,
        ['\Keyapis\Multiapp\V1\GetAppCodeResponse', 'decode'],
        $metadata, $options);
    }

    /**
     * Метод удаления приложения.
     * Soft delete, из базы не удаляется, проставляется статус.
     * Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.
     * Метод доступен для: admin, manager, service
     * @param \Keyapis\Multiapp\V1\DeleteAppRequest $argument input argument
     * @param array $metadata metadata
     * @param array $options call options
     * @return \Grpc\UnaryCall
     */
    public function DeleteApp(\Keyapis\Multiapp\V1\DeleteAppRequest $argument,
      $metadata = [], $options = []) {
        return $this->_simpleRequest('/keyapis.multiapp.v1.AppService/DeleteApp',
        $argument,
        ['\Keyapis\Multiapp\V1\DeleteAppResponse', 'decode'],
        $metadata, $options);
    }

}
