<?php

class GBibliotecaA {
    private $apiKey;
    private $apiSecret;
    private $apiUrl;
    public $MIOLO;

    public function __construct($apiKey, $apiSecret, $apiUrl) {
        $this->MIOLO   = MIOLO::getInstance();
        $this->apiKey = $apiKey;
        $this->apiSecret = $apiSecret;
        $this->apiUrl = $apiUrl;
    }

    public function authenticate($userId, $name, $email, $isbn = NULL) {
        try {
            $data = "consumerkey=".$this->apiKey;
            ($isbn != NULL) ? $data .= "&bookid=" .$isbn : '';
            $data .= "&userid=".$userId;

            //Adicionar rawurlencode
            $data .= "&name=".rawurlencode($name);
            $data .= "&email=".rawurlencode($email);

            //Hash MD5 concatenando as informações e uma DATA que estipula a validade dessa requisição
            //date(‘Ymd’) corresponde a data atual no formato: 20230414
            $mac = md5($this->apiSecret.date('Ymd').$data);

            $data .= "&tok=".$mac;

            $requisicao = $this->apiUrl."/lti/launch.php?".$data;

            if($isbn != NULL) {
                return $this->MIOLO->page->addJsCode('window.open ('.'"'."{$requisicao}".'")'.', "_blank"');
            }

            return $this->MIOLO->page->addJsCode('window.location.assign ('.'"'."{$requisicao}".'")'.'; miolo.showLoading()');
        }
        catch (Exception $e) {
            GPrompt::error( 'Erro retornado pela Biblioteca A: '.$e);
        }
    }
}
?>