<?php
class TCloud {
    public $token="";
    public $cloud_id="";
    public $folder_id="";
    public $zone="";
    public $iam_token="";
    public $debig=false;
    /**
     * Инициализация класса
     * @param type $token - токен
     * @param type $cloud_id - идентификатор облака
     * @param type $folder_id - идентификатор папки
     * @param type $zone - идентификатор зоны     
     */
    public function __construct($token,$cloud_id,$folder_id,$zone,$debug=false) {
        $this->token=$token;
        $this->cloud_id=$cloud_id;
        $this->folder_id=$folder_id;
        $this->zone=$zone;
        $this->debug=$debug;
    }  
    
    /**
     * Получение IAM токена
     * Подробнее: https://yandex.cloud/ru/docs/iam/operations/iam-token/create#api_1
     * @return bool
     */
    public function GetIAMToken(){
        $ch = curl_init("https://iam.api.cloud.yandex.net/iam/v1/tokens");        
        curl_setopt($ch, CURLOPT_VERBOSE, $this->debug);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        
        curl_setopt($ch, CURLOPT_POST, 1);   
        $data["yandexPassportOauthToken"]=$this->token;
        curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($data));
        
        $res=curl_exec($ch);        
          if (curl_errno($ch)) {
            $error_msg = curl_error($ch);
              var_dump($res);
              var_dump($error_msg);
              return false;
          }                
         $res= json_decode($res);
         if ($res==null){return false;};         
         $this->iam_token=$res->iamToken;         
        return true;
    }
    
    /**
     * Распознать картинку
     * @param type $mimetype - тип входящего файла (JPEG, PNG, PDF)
     * @param type $model - режим распозанвания (page)
     * @param type $content - контент в формате BASE64
     * @param type $languageCodes - языки для распознавания (*), массив
     * Подробнее: https://yandex.cloud/ru/docs/vision/quickstart
     */
    public function OCR($mimetype="JPEG",$model="page",$content,$languageCodes=["*"]){        
        $ch = curl_init("https://ocr.api.cloud.yandex.net/ocr/v1/recognizeText");        
        curl_setopt($ch, CURLOPT_VERBOSE, $this->debug);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "Content-Type: application/json",
            "Authorization: Bearer ".$this->iam_token,
            "x-folder-id: ".$this->folder_id,
            "x-data-logging-enabled: true"
        ]);        
        $data["mimeType"]=$mimetype;
        $data["languageCodes"]=$languageCodes;
        $data["model"]=$model;
        $data["content"]=$content;
        curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($data));
        
        $res=curl_exec($ch);        
          if (curl_errno($ch)) {
            $error_msg = curl_error($ch);
              var_dump($res);
              var_dump($error_msg);
              die();  
          }        
          return $res;
    }
    
}