<?php
require_once  __DIR__ . '/auth.php';

use GuzzleHttp\Client;

class SiigoClient
{
    private Client $http;
    public function __construct()
    {
        $this->http = new Client([
            'base_uri' => SIIGO_BASE_URL,
            'timeout'  => 120,
            'headers'  => [
                'Partner-Id'    => PARTNER_ID,
                'Authorization' => 'Bearer ' . getSiigoToken(),
                'Accept'        => 'application/json',
            ],
        ]);
    }

    public function get(string $uri, array $query = []): array
    {
        // quitar cualquier ’/’ inicial para no descartar /v1
        $uri = ltrim($uri, '/');
        $resp = $this->http->get($uri, ['query' => $query]);
        return json_decode($resp->getBody(), true);
    }


    /**
     * POST a Siigo API
     *
     * @param string $uri    Ruta relativa, sin "/" inicial (ej. "products")
     * @param array  $options Opciones de Guzzle (ej. ['json'=>$payload])
     * @return array          JSON decodificado
     */
    public function post(string $uri, array $options): array
    {
        $uri = ltrim($uri, '/');
        $resp = $this->http->post($uri, $options);
        return json_decode($resp->getBody(), true);
    }
}
