<?php

class Agro_Essor_Plug_Auth
{
    /**
     * Método de autenticação do Plug ESSOR
     * Rota: /api/auth/login
     *
     * @return string
     */
    public static function login(): string
    {
        $data = [
            'email' => PLUG_EVENTOS_EMAIL,
            'password' => PLUG_EVENTOS_PASSWORD
        ];
        
        $url = PLUG_URL . "/api/auth/login";
        $ch = curl_init($url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/x-www-form-urlencoded'
        ]);
        curl_setopt($ch, CURLOPT_COOKIEJAR, sys_get_temp_dir() . '/cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEFILE, sys_get_temp_dir() . '/cookie.txt');
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        $data = json_decode($response, true);

        $prefixo = (APPLICATION_ENV != 'production') ? "[PLUG] " : "";
        
        if (empty($data) || $httpCode != 200) {

            if ($data['error']) {
                throw new Exception($prefixo . $data['error']);
            }

            throw new Exception($prefixo . "Erro ao se autenticar.");
        }

        if (empty($data['token'])) {
            throw new Exception("{$prefixo} Não foi possível buscar o token de acesso.");
        }
        
        return $data['token'];
    }
}