<?php
include_once('c_page.php') ;
// http://www.dssl.ru/files/trassir/online_manual_ru/sdk-examples-archive.html
class c_page_trassir extends c_page
{
    public $h1='Тест работы с TRassir' ;
    var $use_jwplayer=1 ;
    function block_main()
    {
        $this->page_title() ;
        ?><form method="POST">
          GUID канала <input type="text" name="filter[guid_stream]" value="<?echo $this->filter['guid_stream']?>">&nbsp;
          <!--GUID канала <input type="text" name="guid_canal" value="<?echo $this->filter['guid_canal']?>">&nbsp;-->
          Время от <input type="text" name="filter[timefrom]" value="<?echo $this->filter['timefrom']?>">&nbsp;
        <br>
        <br>
        <?
        ?><button class="v1" cmd="get_objects">Запрос дерева объектов TRASSIR</button>&nbsp;<?
        ?><button class="v1" cmd="get_channels">Запрос списка каналов</button>&nbsp;<?
        ?><button class="v1" cmd="get_events">Запрос событий сервера</button>&nbsp;<?
        ?><button class="v1" cmd="get_video">Получение видео c архива</button>&nbsp;<?
        ?><button class="v1" cmd="archive_status">Запрос состояния архива</button>&nbsp;<?
        ?><button class="v1" cmd="archive_export">Экспорт архива</button>&nbsp;<?
        ?><button class="v1" cmd="get_screenshot">Запрос скриншота</button>&nbsp;
          <br>
          <button class="v1" cmd="arh_cmd_play">play</button>&nbsp;

        <?




        ?></form><?
    }

    function CMD_arh_cmd_play()
    {   echo '<h2>включить воспроизведение архива;</h2>' ;

        //damp_array($res,1,-1) ;
    }

    function CMD_get_video()
    {
           echo '<h2>Получение видео</h2>' ;
           echo '<h3>Запрос токена для видео</h3>' ;
           $guid='MY4FMufe' ;
           //$guid='peOeE3lI' ;
           $res=$this->get_trassir('/services/get_video/',array('channel='.$guid,'container=mjpeg','stream=archive_main'),array('use_user'=>1)) ;
           damp_array($res,1,-1) ;
           if ($res['success'] and $res['token'])
           {   echo '<h3>Формируем URL для видеопотока</h3>' ;
               $video_url='http://15.25.35.162:555/'.$res['token'] ;
               echo 'Воспроизводим видео по URL: '.$video_url.'<br>' ;
               ?><iframe src="<?echo $video_url?>" style="width:400px;height:300px;"></iframe><br><?


               $res3=$this->get_trassir('/archive_command',array('command=frame_first','token='.$res['token']),array('use_user'=>1,'no_login'=>1)) ;
               damp_array($res3,1,-1) ;
               $res3=$this->get_trassir('/archive_command',array('command=play','token='.$res['token']),array('use_user'=>1,'no_login'=>1)) ;
               damp_array($res3,1,-1) ;

           }


            //https://192.168.1.200:8080/archive_command?command=stop&sid=e03qD0eg&token=P2FYkjcP
            /*echo '<h2>Работа с архивом</h2>' ;
             $guid='MY4FMufe' ;
             $res=$this->get_trassir('/archive_command',array('command=play','token='.$res['token']),array('use_user'=>1)) ;
             damp_array($res,1,-1) ;

            //https://192.168.1.200:8080/objects/operatorgui_jmxwAqxm/archive_export?channel_name_or_guid=HsnnGa9B&start_time_YYYYMMDD_HHMMSS=2014-11-26 17:34:00&end_time_YYYYMMDD_HHMMSS=2014-11-26 17:35:00&filename=export.avi&archive_on_device=0&sid=e03qD0eg
            */


    }

    function CMD_get_objects()
    {   echo '<h2>Получаем список объектов</h2>' ;
        $res=$this->get_trassir('/objects/') ;
        damp_array($res,1,-1) ;
    }

    function CMD_get_screenshot()
    {   echo '<h2>Запрос скриншота</h2>' ;
        $t=mktime(21,42,40,01,20,2017);
        $res=$this->get_trassir('/screenshot/MY4FMufe',array('timestamp='.$t),array('use_user'=>1)) ;
        damp_array($res,1,-1) ;
    }

    function CMD_get_channels()
    {   echo '<h2>Получаем список каналов</h2>' ;
        $res=$this->get_trassir('/channels',array(),array('use_user'=>1)) ;
        damp_array($res,1,-1) ;
    }

    function CMD_get_events()
    {   echo '<h2>Запрос событий сервера</h2>' ;
        $res=$this->get_trassir('/events') ;
        print_2x_arr($res) ;
    }

    function CMD_archive_status()
    {
       echo '<h2>Запрос состояния архива - текущее состояния архива</h2>' ;
       $res=$this->get_trassir('/archive_status',array('type=state'),array('use_user'=>1)) ;
       damp_array($res,1,-1) ;
       echo '<br><h2>Запрос состояния архива - календарь архива</h2>' ;
       $res=$this->get_trassir('/archive_status',array('type=calendar'),array('use_user'=>1)) ;
       damp_array($res,1,-1) ;
       echo '<br><h2>Запрос состояния архива - шкала времени архива</h2>' ;
       $res=$this->get_trassir('/archive_status',array('type=timeline'),array('use_user'=>1)) ;
       damp_array($res,1,-1) ;
    }

    function CMD_archive_export()
    {
        echo '<h2>Экспорт архива</h2>' ;
        /*$res=$this->get_trassir('/objects/operatorgui_peOeE3lI/archive_open_inplace',array('channel_or_template=DS-2CD2522FWD-IS 1',
                                                                    'start_time_YYYYMMDD_HHMMSS=2017-01-20 10:00:00'
                                                                    ),
                                                              array('use_user'=>1
                                                                    )
                                            ) ;
        */
        $t1=mktime(21,42,40,01,20,2017);
        $t2=mktime(21,42,50,01,20,2017);
        $res=$this->get_trassir('/objects/operatorgui_peOeE3lI/archive_export',array('channel_name_or_guid=MY4FMufe',
                                                                    'start_time_YYYYMMDD_HHMMSS=20170120_214240',
                                                                    'end_time_YYYYMMDD_HHMMSS=20170120_214340',
                                                                    'filename=export.avi',
                                                                    'archive_on_device=0'
                                                                    ),
                                                              array('use_user'=>0
                                                                    )
                                            ) ;
        damp_array($res,1,-1) ;

        $res=$this->get_trassir('/objects/operatorgui_peOeE3lI/archive_export_ss',array('channel_name_or_guid=MY4FMufe',
                                                                    'start_time_YYYYMMDD_HHMMSS=20170120_214240',
                                                                    'end_time_YYYYMMDD_HHMMSS=20170120_214340',
                                                                    'filename=export.avi',
                                                                    'archive_on_device=0'
                                                                    ),
                                                              array('use_user'=>0
                                                                    )
                                            ) ;
        damp_array($res,1,-1) ;
    }

    function get_trassir($req,$params=array(),$options=array())
    {
        if (!$options['no_login'])
        { $res_object=array() ;
          if (!$options['use_user']) $login_params='password=12345' ;  else $login_params='username=test&password=12345678' ;
          $result=IO()->doPut_v2('https://','15.25.35.162:8080','/login',$login_params,'',array('no_log_request'=>1,'show_url'=>1)) ;
         if ($result['status']==200) $res_object=json_decode($result['content'],true);
         damp_array($res_object,1,-1) ;
         if (!$res_object['success'] or !$res_object['sid'])  { echo '<div class="alert">Не удалось пройти авторизацию: <span class="black">'.$res_object['error_code'].'</span></div>' ; return(array()) ; }
         $this->sid=$res_object['sid'] ;
        }
       $params[]='sid='.$this->sid ;

       $res_object=array() ;
       $_params=implode('&',$params) ;
        $result=IO()->doPut_v2('https://','15.25.35.162:8080',$req,$_params,'',array('no_log_request'=>1,'show_url'=>1)) ;
       if ($result['status']==200)
        {  $arr=explode('/*',$result['content']) ;
       $res_object=json_decode($arr[0],true);
       if ($arr[1]) echo '<div class="alert">'.$arr[1].'</div>' ;
       if (!_sizeof($res_object)) echo '<div class="green">Сервер вернул пустой ответ</div>' ;
        }
       return($res_object) ;
    }


}
?>
